

对消息进行填充:对原始消息进行填充使其长度与896模1024同余(即填充后的消息长度-896 mod 1024)。即使原始消息已经满足上述长度要求,仍然需要进行填充,因此填充位数在1到1024之间。填充部分由一个1和后续的0组成。
添加消息长度信息:在填充后的消息后添加一个128位的块,用来说明填充前消息的长度,表示为一个无符号整数(最高有效字节在前)。至此,产生了一个长度为1024整数倍的扩展消息。
初始化Hash缓冲区:Hash函数计算的中间结果和最终结果保存在512位的缓冲区中,分别用64比特的寄存器(A,B,C,D,E,F,G,H)表示,并将这些寄存器初始化为下列64位的整数(十六进制值):
A = 0x6A09E667F3BCC908
B = 0x BB67AE8584CAA73B
C = 0x 3C6EF372FE94F82B
D = 0x A54FF53A5F1D36F1
E=0x 510E527FADE682D1
F=0x 9B05688C2B3E6C1F
G=0x 1F83D9ABFB41BD6B
H=0x 5BE0CD19137E2179
以1024位分组(16个字)为单位处理消息:处理算法的核心是需要进行80轮运算的模块。
输出:所有的N个1024位分组都处理完以后,最后输出的即是512位的消息散列值。
| 各省软考办 | ||||||||||