哈希函数-SHA1和SHA256算法

SHA2算法是对SHA1算法的继承。区别在于两者的构造和签名长度不同。

 

SHA1

SHA-1通过4轮运算(每轮20步,共80步)将长度不超过264的输入压缩成为160bit的消息摘要。

初始化MD缓冲区,需要160位来存放哈希函数的初始变量、中间摘要和最终摘要。需要5个32位的寄存器。

SHA-1的框图

 

哈希函数-SHA1和SHA256算法

SHA256

SHA256最大输入长度为2^64比特,输入按照512比特分组,最终输出256比特长度的消息摘要。

消息填充

 

哈希函数-SHA1和SHA256算法

 

哈希函数-SHA1和SHA256算法

初始化

需要8个32位寄存器(ABCDEFGH)的缓存,初始化值是由SHS(Secure Hash Standard)协议规定的8个32位的字组成。

 

哈希函数-SHA1和SHA256算法

压缩迭代计算

SHA256使用了六种逻辑函数

 

哈希函数-SHA1和SHA256算法

MD结构

哈希函数-SHA1和SHA256算法

 

每个消息块经过64次循环后,就完成了本次迭代,形成新的哈希值H。经过N次迭代之后,最终得到H(N)就是SHA256算法的消息摘要。

for i = 1 to N (N为消息块数)

{

……

for j = 0 to 63 (运用SHA256压缩函数,完成64次循环)

{……}

……

}