哈希函数-SHA1和SHA256算法
SHA2算法是对SHA1算法的继承。区别在于两者的构造和签名长度不同。
SHA1
SHA-1通过4轮运算(每轮20步,共80步)将长度不超过264的输入压缩成为160bit的消息摘要。
初始化MD缓冲区,需要160位来存放哈希函数的初始变量、中间摘要和最终摘要。需要5个32位的寄存器。
SHA-1的框图
SHA256
SHA256最大输入长度为2^64比特,输入按照512比特分组,最终输出256比特长度的消息摘要。
消息填充
初始化
需要8个32位寄存器(ABCDEFGH)的缓存,初始化值是由SHS(Secure Hash Standard)协议规定的8个32位的字组成。
压缩迭代计算
SHA256使用了六种逻辑函数
MD结构
每个消息块经过64次循环后,就完成了本次迭代,形成新的哈希值H。经过N次迭代之后,最终得到H(N)就是SHA256算法的消息摘要。
for i = 1 to N (N为消息块数) { …… for j = 0 to 63 (运用SHA256压缩函数,完成64次循环) {……} …… } |