MD5算法

介绍

  MD5是一种哈希算法,用来保证信息的完整性。这种算法不可逆。MD5算法算出来的值的长度是16字节,即128位。

信息填充

添加填充位

  输入的报文信息的长度可以是任意值,在计算MD5值之前,需要对输入的报文信息进行填充处理,使得报文添加填充位之后,报文的长度模512余448,若输入的报文信息已经满足模余的要求,则需要对报文信息填充512位。填充位最小长度为1,最大长度为512。填充时先填充一个1,然后往后补0至满足条件即可。

填充长度项

在满足上面的模余条件之后,往后填充64位,表示未补位之前的长度,填充结束之后,报文的总长度为512的整数倍。

初始化

初始化MD5的四个寄存器,每个寄存器都为32位,初始化的内容为:
A=01234567
B=89ABCDEF
C=FEDCBA98
D=76543210
由于小端存储,所有他们的值在内存中的应该是
A=0x67452301
B=0xEFCDAB89
C=0x98BADCFE
D=0x10325476