大家谈论比特币算法原理时经常提到的哈希算法是指什么

比特币的哈希率是什么意思?
查了一下哈希值定义是一组二进制数,比特币哈希率是每秒处理多少组数据的意思吗?处理能力跟cpu频率有什么关系?
是不是很多人跟我一样没搞清楚,比特币的G是数据,cpu的G是次数
你是对的。 就是假设挖矿是解一道方程题, 而且只有把每个整数代入才能算出来, 那么哈希率就是每秒处理数据的速度。 CPU越好,固然哈希值越高, 速度越快。
总的越高,保护越高
思路不错!!!
1P7UukVhoESwD3b1ewBzjo2HjTKHvtiRSn& &我的2个比特币4天了还没确认有人帮能我看一下吗?
作者的其他主题比特币加密算法一共有两类:非对称加密算法(椭圆曲线加密算法)和哈希算法(SHA256,RIMPED160算法)。
比特币私钥(private key),公钥(public key),公钥哈希值(pubkeyhash),比特币地址(address)公钥和私钥由椭圆曲线加密算法生成,私钥可推出公钥而反之不能,这也是这篇文章后半部分要隆重介绍的部分。有了私钥,你就可以对文本签名。别人拿了你的公钥就可以根据签名认证你是否拥有私钥。这就是证明你拥有存款的办法。为了安全起见,公钥应该隐藏起来。所以对公钥进行哈希加密,生成公钥哈希值然后计算哈希值的比特币地址:公钥哈希值=RIMPED160(SHA256(公钥))比特币地址=*1*+Base58(0+公钥哈希值+校验码)校验码=前四字节(SHA256(SHA256(0+公钥哈希值)))可以看出,地址和公钥哈希值是等价的(可以互推)但公钥哈希值只能由公钥算出(不能逆推)。验证的时候需要提供签名和公钥,算出公钥哈希值并和比特币支出脚本的公钥哈希值对比,最后再验证签名。这样就保证了公钥不会出现在支出脚本里。(收入单提供签名,支出单提供公钥,或者收入单提供签名和公钥,支出单提供公钥哈希值,这两种验证办法是比特币的标准脚本)哈希(Hash)算法哈希算法(又称散列算法)不是加密解密算法,因为其加密的过程是不可逆的(你只能加密不能解密),也没有所谓的公钥私钥的概念。哈希算法原理是将一段信息转换成一个固定长度的字符串。这个串字符串有两个特点:1、如果某两段信息是相同的,那么字符串也是相同的。2、即使两段信息十分相似,但只要是不同的,那么字符串将会十分杂乱随机并且两个字符串之间完全没有关联。信息可以是一串数字,一个文件,一本书。。。。。。只要能编码成一串数字即可。显然,信息有无数多种而字符串的种类是有限的(因为是固定长度),所以这种加密是不可逆的。哈希算法的用途1、验证两段信息是否相同。A使用QQ给B传了一个文件,这个文件会在QQ的服务器上保存下来。如果C也传了这个文件给D,QQ会对比这个文件的哈希值和A传给B的文件的哈希值是否相同,如果相同则说明是同一个文件,C就不需要再一次上传文件给服务器。这就是所谓的秒传。一个压缩包在传输的时候可能会有损坏。在压缩之前计算原文件的哈希值并放入压缩包中,待解压后再次计算解压文件的哈希值。对比压缩包中的哈希值则可以知道文件是否损坏。BT和迅雷下载中所谓的哈希验证也是同一道理。2、验证某人是否信息持有者。在一个论坛注册帐号,如果论坛把密码保存起来,因为无论坛多么安全都可能会被破解,所以密码总会有泄漏的可能性。如果不保存密码而保存密码的哈希加密值。当你下次登陆论坛的时候,将你输入的密码的哈希值和你注册时密码的哈希值比对,如果相同则可以证明你就是密码持有者了。这样既保证了密码泄露的可能,又保证了验证持有者的功能。哈希算法的破解假如论坛被破解了,黑客获得了哈希值,但黑客只有哈希值依旧是不能登陆论坛的,他得算出用户的密码。他可以随机产生密码一个一个试,如果算出的哈希值正好和这个哈希值相同,则说明这个密码可用。这就是所谓的猜密码。显然,密码长度越长,密码越复杂,猜到的可能性就越低。如果有一种办法能增加这种猜到可能性,使其大到能够容忍的范围,则该哈希算法被破解了。例如原本猜中的概率是1/00,现在增加到了1/1000。如果每猜一个密码需要1秒,按照之前的概率猜知道太阳毁灭都可能没猜中,但后者只需要1小时就足够了。另外,由于信息的种类是无限的,所以你猜中的密码未必就是原先的密码,它们可能是碰巧哈希值相同而已,这就是所谓的碰撞。如同增加猜中概率一样,如果能增加碰撞的概率,那么同样可以轻易登陆论坛(因为论坛也不知道原本的密码是什么,所以猜的密码和原密码不同也没关系,只要哈希值相同即可)。一旦碰撞容易轻易产生,那么哈希算法就被破解了。前几年闹得沸沸扬扬的哈希算法破解就是这么回事,数学家通过一定办法增加了碰撞的概率。哈希算法的大致加密流程1、对原文进行补充和分割处理(一般分给为多个512位的文本,并进一步分割为16个32位的整数)。2、初始化哈希值(一般分割为多个32位整数,例如SHA256就是256位的哈希值分解成8个32位整数)。3、对哈希值进行计算(依赖于不同算法进行不同轮数的计算,每个512位文本都要经过这些轮数的计算)。经过这样处理以后,哈希值就显得十分杂乱随机了。非对称加密算法非对称加密算法是世界上最重要的加密解密算法。所谓非对称,是指加密和解密用到的公钥和私钥是不同的。非对称加密算法依赖于求解一数学问题困难而验证一数学问题简单。RSA算法著名的RSA加密算法就是利用了对一个大整数进行因数分解困难,验证因子组成某个大整数容易的原理而编写的。具体说,比如求143的因子,你可能需要进行11次除法才能得到143=11*13的结果。但是要验证11*13=143,则只需要一次乘法就够了。如要破解RSA,只需要能够快速分解大整数即可,显然这是破解RSA最简单最快速的办法。但要分解大整数是极不容易的(数学上叫做NP-Hard问题),这也就是RSA能保证其不能被破解的原因。反之,如果人类某天找到了快速分解大整数的办法(例如利用量子计算机进行计算),则RSA算法就立即被破解了。RSA算法的大致原理生成公钥和私钥:1、生成一对大质数p,q,求出n=p*q和f=(p-1)*(q-1)。2、生成一个随机数e,满足e&f且e,f互质。3、求出e关于f的模逆d,即求出e*d=1 mod f。设明文为m,密文为g。用公钥n,e加密:m^e=g mod n用私钥n,d解密:g^d=m mod n证明解密后的明文就是原先的明文:根据加密解密规则,将g=m^e mod n代入g^d=m mod n后,发现只要证明m^(e*d)=m mod n即可(同余运算的原理)。由于e*d=1 mod f,所以只需证明m^(f+1)=m mod n即可。根据欧拉定理,f是欧拉函数所以得证。(具体的数学原理这里不再赘述)显然,如果知道了f,就可以根据公钥n,e计算出d破解明文。要知道f,必须得知道p和q。要知道p和q,必须将n分解。所以RSA的破解依赖于整数分解。如果对RSA算法感兴趣,可以看这两篇文章。椭圆曲线加密算法试想有一种乘法,可以在已知a,b的情况下计算出c=a*b,但已知c,a不能计算出b。我们可以利用这种乘法进行加密解密。设明文m,密文g1,g2。用公钥a,c=a*b,r(随机数)加密:g1=m+r*cg2=r*a用私钥a,b解密:m=g1-b*g2证明:g1-b*g2=m+r*c-b*r*a=m+r*c-r*c=m我们还可以利用这种乘法进行签名认证。设原文m,签名g1,g2。用私钥a,b,r(随机数)签名:x=r*ag1=SHA(m,x)g2=r-g1*b用公钥验证:g2*a+g1*c&=(r-g1*b)*a+g1*c&=r*a-g1*b*a+g1*c&=r*a-g1*c+g1*c&=r*a=x计算SHA(m,x)是否和g1相等。这就是加密解密层面上的椭圆曲线加密算法。椭圆曲线加密算法的点乘运算如何找到这样一种乘法是椭圆曲线加密算法的关键。通常的整数乘法是没法满足这样的要求的。乘法来源于加法,我们必须定义新的运算规则。例如定义a!+b=a*b,a!*b=b^a,这里的!+和!*是新定义的加法和数量乘法,于是我们得到这样的结论:加法交换律:a!+b=b!+a加法结合律:(a!+b!)+c=a!+(b!+c)加法零元素存在:a!+1=a*1=a,这里的1相当于普通加法中的0。加法负元素存在:a!+b=a!+(1/a)=a*(1/a)=1数量乘法单位元素存在:1!*b=b^1=b数量乘法结合律:(a*b)!*c=c^(a*b)=c^(b*a)=c^b^a=a!*(c^b)=a!*(b!*c)加乘法分配率:(k+l)!*a=k!*a+l!*a加乘法分配率:k!*(a!+b)=k!*a!+k!*b这样的加法和乘法满足了很多普通加法和乘法中的性质,但是却满足了一些特定条件,例如比原本的乘法更难根据a和c=a!*b=a^b求出b(需要对数运算)。我们的目标是找到这样一种加法和乘法,使其满足前文所说的条件。数学家通过研究椭圆曲线找到了这一办法:设平面上两点P(x1,y1),Q(x2,y2),则P+Q=R(x3,y3),满足x3=k^2-2x1,y3=k(x1-x3)-y1,k=(3*x1)/(2y1)。定义k*P=P+P+P+....+P。这样的一套(关于平面上点的)运算法则(加法和点乘)就满足这样的需求。这和椭圆曲线有什么关系呢?事实上,如果P和Q都是曲线y^2=x^3+7上的点,那么P+Q=R也是椭圆曲线y^2=x^3+7上的点并且这三个点位于一条直线上。这并不是巧合,而是逆推出来的。亦即当P和Q是曲线上的点的时候,那么直线PQ和曲线的交点是R,求出R的坐标为(x3,y3)。使用椭圆曲线加密算法是因为它比RSA算法更快,并且能够实现和RSA算法类似的功能。实际使用的时候,还需要将曲线和点离散化,并且把坐标系扩展。这涉及更多数学知识,如有兴趣可参考这篇文章:关于比特币中椭圆曲线用到的参数,可参看这个:
阅读(...) 评论()比特币的用途 - 阮一峰的网络日志
比特币的用途
这两周,(bitcoin)的价格,我也凑热闹关注了一阵。
首先说明,我对比特币所知甚少,从未参与过生产/交易,对它的了解仅限于新闻报道和维基百科,但我有一些不成熟的想法。
看着比特币的价格节节上升,我就在想,它有什么用?
想来想去,我突然悟到,比特币的最佳用途是转移资产!
假设我有100万人民币,需要转移到美国,比特币是最方便的方法。我在国内市场上用人民币买入比特币,然后立刻转手在美国市场上卖出,将所得的美元转入美国银行账户,就一切OK了。
整个过程只要点几下鼠标就行了,非常方便快捷,不需要任何其他手续或证明文件。而且,比特币是24小时连续交易,不要手续费,成本几乎为零。保密性也非常好,中国政府和美国政府都不会察觉这笔交易,更不要提追踪了。
唯一的风险是,持仓期间价格下跌。但要是买入后立即抛出,价格波动幅度应该不会太大。另外,比特币的价格是全球统一的,中国市场和美国市场几乎没有价差,不用担心汇兑风险。
虽然还没有试验过,但是我越想越觉得,这种转移资金的方法可行。于是,我马上想到第二个问题,如果比特币真的成为资金转移的首选渠道,会发生什么结果?
它会供不应求!每个人都想买入,所以价格还会不断上涨。比特币总共只有2100万个,它的价格最后很可能会是天价。
但是,我也意识到,任何数字资产其实都可以充当这种高效、快速、低成本的交易中介,只要它被广为接受,且有足够的市场容量和流动性。比特币在这方面只不过反映了数字货币的优势,只是一个代表而已。说实话,如果腾讯公司有足够的公信力,我觉得也能起到比特币的作用。
当然,腾讯公司或者任何其他商业公司,都很难让人完全信任,所以Q币取代不了比特币。分布式、不受任何机构或个人控制,正是比特币的一大卖点。
比特币的真正缺点,我现在只想到一个,这也是我想问的第三个问题。如果比特币的价格不断上涨,意味着什么?
很简单,没有人会使用比特币!因为持有者只要一直持有,就能享受价格的不断上涨。在比特币的世界,根本不会发生通货膨胀,只会发生通货紧缩。今天一个西瓜是1比特币,明天可能是0.5比特币,一年以后也许会到0.05比特币。只要你一直持有,它的购买力就在不断增加,所以你不会使用/出售比特币,只会囤积它。另一方面,对生产者来说,通货紧缩就是噩梦,它意味着同样的产量换回的货币越来越少。
因此,我得到了一个悖论:比特币的用途是货币,但是它不可能当作货币用。
如果比特币能够克服这个缺点,就好了。如果发行量能够在2100万的基础上,每年固定增加一个百分比(比如5%),那我就会比较肯定,它就是未来人类社会的货币。
不过,谁也没有说比特币是完美无缺的,本质上它只是一种分布式算法,完全可能做出改进,也许不久以后就会有人提出比特币 2.0算法,或者其他数字货币的算法。事实上,我认为最大风险来自这里。
再次声明,我没研究过,也没有实际操作过。上面只是我的一点臆测,很可能没有考虑周全,结论也可能是错的,希望与大家共同探讨。
上个月,"机器人之父"恩格尔伯格去世。
去年下半年,《财新周刊》缺一个专栏作者,问我写不写。
2009年,30岁的瑞典程序员Markus Persson写了一个小游戏Minecraft。
上个月(11月13日),83岁的柯达公司退休工程师布赖斯·拜尔(Bryce Bayer)去世。

我要回帖

更多关于 比特币哈希值 的文章

 

随机推荐