MD5算法描述

算法描述:
消息输入长度不大于2^64,经过预处理,每个消息分组长度为512bit。并将每个消息分组512bit分割成16个32位,标识为M0,M1……M15。经过压缩函数,MD5的算法最后会输出4个32bit级联组成的128bit的消息摘要。

详细步骤:

1.消息填充:

MD5算法首先对输入的数据进行补位,使得数据位长度对512求余的结果是448,即数据扩展至:Kx512+448 bit
其中,K为整数。
补位操作如下:在数据后面先补一个1,然后补若干个0直至满足上述要求。
例如,输入消息为abc,将其转换成字符串表示为:
0110_0001 0110_0010 0110_0011
然后进行如下补位操作:
0110_0001 0110_0010 0110_0011 1000_0000 ……(补423个0)
24+1+423 = 448bit
将补位后的结果和最后的64bit的消息长度组成的二进制转换成16进制表示:
在这里插入图片描述

2.初始变量

A= 0x1234567;B= 0x89abcdef ; C=0xfedcba98; D=0x76543210 ;
注意这里的是低字节在前、高字节在后的小端存储表示。

3.压缩循环

主循环有4轮,每一轮有16次操作。
FF(a ,b ,c ,d ,Mj ,s ,ti ) 操作为 a = b + ( (a + F(b,c,d) + Mj + ti) << s)

GG(a ,b ,c ,d ,Mj ,s ,ti ) 操作为 a = b + ( (a + G(b,c,d) + Mj + ti) << s)

HH(a ,b ,c ,d ,Mj ,s ,ti) 操作为 a = b + ( (a + H(b,c,d) + Mj + ti) << s)

II(a ,b ,c ,d ,Mj ,s ,ti) 操作为 a = b + ( (a + I(b,c,d) + Mj + ti) << s)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值