谭文学信息安全与保密教案 第13/67页:4/21/2013 11:34 AM
– 如果|M0| ≡ 448 mod 512,则|M1| = |M|+512 –Padding内容: 100?0
Step 2: Append 64-bit length 填充前长度,将填充前长度表示为64位的形式。(单位:bits)。 例如:M0=“abc”.|M0|=24bits=0x18,则64位长度为:0x18||0x00*7.
–若|M0| > 2^64 bits,则仅取长度的2^64进制的低64位。
所以64位长度位并未反应M0的真实长度。 即|M|%2^64
谭文学信息安全与保密教案 第14/67页:4/21/2013 11:34 AM
–数据格式:低字节在前(little-endian)
–|M2|为512的倍数: Y1,?,YL-1(L个分组每个分组为512位=16个32位整数)
Step 3: (128哈希值)向量初始化Initialize MD buffer (little-endian)
(ABCD)?CV0?IV ,I=1。,
A = 01 23 45 67 (左边是内存状况,值形式:0x67452301)
B = 89 AB CD EF (0xEFCDAB89) C = FE DC BA 98 (0x98BADCFE) D = 76 54 32 10 (0x10325476)
谭文学信息安全与保密教案 第15/67页:4/21/2013 11:34 AM
Step 4: MD5:压缩;CV0=IV, CVi= HMD5(CVi-1,Yi) Step 5: (ABCD)为Output MD = CVL 。
其中:IV初始常128位向量。 Pi = 消息的第i个512位数据块 L = 消息中数据块数;
CVq = 链接变量,用于第q个数据块的处理 MD: 最终消息摘要结果
+:分别按32位字计算的模2^32加法结果。
谭文学信息安全与保密教案 第16/67页:4/21/2013 11:34 AM
相关推荐: