(一)Hash算法
又称杂凑算法、散列算法、哈希算法或数据摘要算法。指产生哈希值或杂凑值的计算方法。能够将一个任意长的比特串映射到一个定长的比特串。
(二)常见Hash算法
ID | 算法 | 缩写 | 说明 |
1 | MD5 | Message Digest Aigorithm-5 | 1992年公开,以512位数据块为单位处理输入,产生128位哈希值。常用于文件完整性检查。目前MD5已不安全(王小云教授已破解)。 |
2 | SHA | Secure Hash Aigorithm | 由NIST开发,在1993年成为美国标准。 与MD5原理类似,分组长度512位,产生160位哈希值,比MD5更安全。 版本:SHA1、SHA2、SHA3 哈希值长度:SHA224、SHA256、SHA384、SHA512等 |
3 | SM3 | 国产算法 | 国家密码管理局于2010年公布了商用密码杂凑算法标准。 SM3算法消息分组长度512位,输出杂凑值长度256位。 |
(三)SHA算法
(1)SHA-1:第一代SHA算法标准。输入分组长度为512位(消息长度是512位的整数倍,最大长度264-1位)。2017年被碰撞攻击攻破, 不推荐使用。
应用:CA和数字证书。
(2)SHA-2:包括SHA-224(SHA-256阉割版)、SHA-256、SHA-384(SHA-512阉割版)和SHA-512
应用:SSL选择SHA2作为数字签名的散列算法,一般采用SHA-256。
(3)SHA-3:源于Keccak算法,具备海绵构造(不同于MD和SHA1/2)的全新设计,拥有更高的的灵活性和安全性。提供不同长度输出SHA3-224、SHA3-256、SHA3-384和SHA3-512
应用:区块链领域
(四)HASH算法对比
算法 | 分组长度(位) | 生成摘要长度(位) | 描述 | |
1 | MD5 | 512 | 128 | 不推荐 |
2 | SHA-1 | 512 | 160 | 不推荐 |
3 | SHA-2 | 512 | SHA-长度(224/256/384/512) | 用于大部分安全性较高环境(SHA-256) |
4 | SHA-3 | 不固定 | SHA3-长度(224/256/384/512) | 用于高安全级别(区块链) |
5 | SM3 | 512 | 256 | 国标 |
说明:SHA-1相对MD5,不同明文的碰撞几率降低了2^32(160-128) = 324294967296