3.4.2 Hash算法

2025-06-17 17:33:32 更新

(一)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