区块链:Hash 算法总结

区块链技术是一系列技术的结合,hash 算法是其中尤为重要的一块,了解hash 算法对理解区块链有一定的帮助。

1.Hash 算法的特点:

正向快速:给定明文和 hash 算法,在有限时间和有限资源内能计算出 hash 值。

逆向困难:给定(若干) hash 值,在有限时间内很难(基本不可能)逆推出明文。

输入敏感:原始输入信息修改一点信息,产生的 hash 值看起来应该都有很大不同。

冲突避免:很难找到两段内容不同的明文,使得它们的 hash 值一致(发生冲突)。即对于任意两个不同的数据块,其hash值相同的可能性极小;对于一个给定的数据块,找到和它hash值相同的数据块极为困难。

2.Hash 在密码学中的用法

在密码学中,hash算法的作用主要是用于消息摘要和签名,换句话说,它主要用于对整个消息的完整性进行校验。举个例子,我们登陆wangwang的时候都需要输入密码,那么知乎如果明文保存这个密码,那么黑客就很容易窃取大家的密码来登陆,特别不安全。那么知乎就想到了一个方法,使用hash算法生成一个密码的签名,知乎后台只保存这个签名值。由于hash算法是不可逆的,那么黑客即便得到这个签名,也丝毫没有用处;而如果你在网站登陆界面上输入你的密码,那么知乎后台就会重新计算一下这个hash值,与网站中储存的原hash值进行比对,如果相同,证明你拥有这个账户的密码,那么就会允许你登陆。银行也是如此,银行是万万不敢保存用户密码的原文的,只会保存密码的hash值而而已。在这些应用场景里,对于抗碰撞和抗篡改能力要求极高,对速度的要求在其次。一个设计良好的hash算法,其抗碰撞能力是很高的。

3.流行的hash 算法

目前流行的hash 算法包括:MD5 和SHA 系列算法

MD5: 生成的哈希值是128位的二进制数据,也就是32位的十六进制数据,MD5算法的过程分为四步:处理原文设置初始值循环加工,拼接结果。

SHA系列算法分:

1.SHA-1 :它的输出长度是160位的hash值,但是在性能上SHA-1比MD5略低,另外 已经谷歌的chrome 小组破解了,宣称不安全了。

2.SHA-2是一系列SHA 算法的变体的总称包含如下版本

SHA-256:可以生成长度256bit的信息摘要。 (在性能和安全的权衡下,这个是用的比较多,区块链也是用的这个)

SHA-224:SHA-256的“阉割版”,可以生成长度224bit的信息摘要。

SHA-512:可以生成长度512bit的信息摘要。

SHA-384:SHA-512的“阉割版”,可以生成长度384bit的信息摘要。

信息摘要越长,发生碰撞的几率就越低,破解的难度就越大。但同时,耗费的性能和占用的空间也就越高。

4.国密中SM3 也是hash 算法

SM3密码摘要算法是中国国家密码管理局2010年公布的中国商用密码杂凑算法标准。SM3算法适用于商用密码应用中的数字签名和验证,是在SHA-256基础上改进实现的一种算法。SM3算法采用Merkle-Damgard结构,消息分组长度为512位,摘要值长度为256位。SM3算法的压缩函数与SHA-256的压缩函数具有相似的结构,但是SM3算法的设计更加复杂,比如压缩函数的每一轮都使用2个消息字。

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180112G08S4T00?refer=cp_1026

扫码关注云+社区