在上一篇博文中提到了MD5实现的第一步和第二步,这里继续后续的两步。
http://blog.csdn.net/sinat_26551021/article/details/47103203
第三步
初始化:由于小端模式的原因,在程序中应该按如下定义:
a=0x67452301,b=0xEFCDAB89,c=0x98BADCFE,d=0x10325476。
第四步
四轮循环运算:循环的次数是分组的个数(N+1)
实现细节:具体的运算过程不再赘述,按照博文中的即可。
http://blog.csdn.net/forgotaboutgirl/article/details/7258109
经过四轮循环运算之后,结果存储在a,b,c,d中,但是仍然由于小端模式的原因,此时的结果必须经过变换才能得到最终的MD5值。图1为经过四轮循环运算之后,a,b,c,d的值。为了确定你的结果是否正确,可以和网站http://www.cmd5.com/上的值进行对比,图2为网站上的结果。
对比两图,可以发现,图1为图2的小端模式存储,因此在我们得到图1的结果后,需要将其变换为图2中的形式。
图3为经过变换的数据,与图2完全一致,至此完成了MD5算法。