目录
1.引入
2. SHA512-224\256
3.SHA-3
4.MD5
5.SM3
1.引入
上篇密码学基础:搞懂Hash函数SHA1、SHA-2、SHA3(1)-CSDN博客,我们先就将基础的SHA1\2讲解了,接下来我们继续聊SHA-3、SHA2变体SHA512_224\256等
2. SHA512-224\256
SHA512生成512位消息摘要,初始IV为:
(0x6A09E667F3BCC908), (0xBB67AE8584CAA73B),
(0x3C6EF372FE94F82B), (0xA54FF53A5F1D36F1),
(0x510E527FADE682D1), (0x9B05688C2B3E6C1F),
(0x1F83D9ABFB41BD6B), (0x5BE0CD19137E2179)
SHA512_224生成224位消息摘要,初始IV为:
(8C3D37C819544DA2),(73E1996689DCD4D6),
(1DFAB7AE32FF9C82),(679DD514582F9FCF),
(0F6D2B697BD44DA8),(77E36F7304C48942),
(3F9D85A86A1D36C8),(1112E6AD91D692A1)
SHA512_256生成256bit消息摘要,初始IV为:
(22312194FC2BF72C),(9F555FA3C84C64C2),
(2393B86B6F53B151),(963877195940EABD),
(96283EE2A88EFFE3),(BE5E1E2553863992),
(2B0199FC2C85B8AA),(0EB72DDC81C52CA2)
以明文0x112233为例,SHA512、SHA512_224、SHA512_256的hash值分别为:
图 2 基于SHA512 消息摘要
图 3 基于SHA512_224 消息摘要
图 4 基于SHA512_256 消息摘要
从上图可以看到,即使相同的数据,虽然同样是基于SHA512,但由于IV的不同,从而影响到了消息摘的生成。
3.SHA-3
SHA-3是NIST在2015年新发布的Hash函数标准,目标是为了从设计原理上与SHA2进行区分,从而提升安全性。
该算法是有Keccak团队提出,具备与MD、SHA-1/2等迭代结构不一样的海绵结构,抵抗传统的碰撞攻击和第二原像攻击,如下:
图 5 碰撞攻击和第二原象攻击
根据NIST.FIPS.202中描述,海绵结构如下所示:
图 6 SHA-3海绵结构
同样的,SHA3也是一系列hash函数的统称,支持的算法包括:SHA3-224\256\384\512。
4.MD5
MD5全称MD5 Message-Digest算法,发布于1992年,作用是将任意长度的消息作为输入,并产生输入的128位“指纹”或“消息摘要”作为输出。
与SHA-1类似,它也已经被碰撞攻击攻破,现目前基本已经弃用。
5.SM3
SM3全称ShangMi 3,是我们国家关于Hash函数的标准,可以将任意有限长度的数据,输出为消息摘要长度为256位的比特串,广泛用于数字签名、MAC生成等等。
其初始向量为:
(7380166f),(4914b2b9),(1724422d7),(da8a0600),
(a96f30bc),(163138aa),(e38dee4d),(b0fb0e4e)