MD5算法研究(2)
FF(b,c,d,a,M3,22,0xc1bdceee)<BR> FF(a,b,c,d,M4,7,0xf57c0faf)<BR> FF(d,a,b,c,M5,12,0x4787c62a)<BR> FF(c,d,a,b,M6,17,0xa8304613)<BR> FF(b,c,d,a,M7,22,0xfd469501)<BR> FF(a,b,c,d,M8,7,0x698098d8)<BR> FF(d,a,b,c,M9,12,0x8b44f7af)<BR> FF(c,d,a,b,M10,17,0xffff5bb1)<BR> FF(b,c,d,a,M11,22,0x895cd7be)<BR> FF(a,b,c,d,M12,7,0x6b901122)<BR> FF(d,a,b,c,M13,12,0xfd987193)<BR> FF(c,d,a,b,M14,17,0xa679438e)<BR> FF(b,c,d,a,M15,22,0x49b40821)<BR><BR> 第二轮<BR><BR> GG(a,b,c,d,M1,5,0xf61e2562)<BR> GG(d,a,b,c,M6,9,0xc040b340)<BR> GG(c,d,a,b,M11,14,0x265e5a51)<BR> GG(b,c,d,a,M0,20,0xe9b6c7aa)<BR> GG(a,b,c,d,M5,5,0xd62f105d)<BR> GG(d,a,b,c,M10,9,0x02441453)<BR> GG(c,d,a,b,M15,14,0xd8a1e681)<BR> GG(b,c,d,a,M4,20,0xe7d3fbc8)<BR> GG(a,b,c,d,M9,5,0x21e1cde6)<BR> GG(d,a,b,c,M14,9,0xc33707d6)<BR> GG(c,d,a,b,M3,14,0xf4d50d87)<BR> GG(b,c,d,a,M8,20,0x455a14ed)<BR> GG(a,b,c,d,M13,5,0xa9e3e905)<BR> GG(d,a,b,c,M2,9,0xfcefa3f8)<BR> GG(c,d,a,b,M7,14,0x676f02d9)<BR> GG(b,c,d,a,M12,20,0x8d2a4c8a)<BR><BR> 第三轮<BR><BR> HH(a,b,c,d,M5,4,0xfffa3942)<BR> HH(d,a,b,c,M8,11,0x8771f681)<BR> HH(c,d,a,b,M11,16,0x6d9d6122)<BR> HH(b,c,d,a,M14,23,0xfde5380c)<BR> HH(a,b,c,d,M1,4,0xa4beea44)<BR> HH(d,a,b,c,M4,11,0x4bdecfa9)<BR> HH(c,d,a,b,M7,16,0xf6bb4b60)<BR> HH(b,c,d,a,M10,23,0xbebfbc70)<BR> HH(a,b,c,d,M13,4,0x289b7ec6)<BR> HH(d,a,b,c,M0,11,0xeaa127fa)<BR> HH(c,d,a,b,M3,16,0xd4ef3085)<BR> HH(b,c,d,a,M6,23,0x04881d05)<BR> HH(a,b,c,d,M9,4,0xd9d4d039)<BR> HH(d,a,b,c,M12,11,0xe6db99e5)<BR> HH(c,d,a,b,M15,16,0x1fa27cf8)<BR> HH(b,c,d,a,M2,23,0xc4ac5665)<BR><BR> 第四轮<BR><BR> II(a,b,c,d,M0,6,0xf4292244)<BR> II(d,a,b,c,M7,10,0x432aff97)<BR> II(c,d,a,b,M14,15,0xab9423a7)<BR> II(b,c,d,a,M5,21,0xfc93a039)<BR> II(a,b,c,d,M12,6,0x655b59c3)<BR> II(d,a,b,c,M3,10,0x8f0ccc92)<BR> II(c,d,a,b,M10,15,0xffeff47d)<BR> II(b,c,d,a,M1,21,0x85845dd1)<BR> II(a,b,c,d,M8,6,0x6fa87e4f)<BR> II(d,a,b,c,M15,10,0xfe2ce6e0)<BR> II(c,d,a,b,M6,15,0xa3014314)<BR> II(b,c,d,a,M13,21,0x4e0811a1)<BR> II(a,b,c,d,M4,6,0xf7537e82)<BR> II(d,a,b,c,M11,10,0xbd3af235)<BR> II(c,d,a,b,M2,15,0x2ad7d2bb)<BR> II(b,c,d,a,M9,21,0xeb86d391)<BR><BR> 常数ti可以如下选择:<BR><BR> 在第i步中,ti是4294967296*abs(sin(i))的整数部分,i的单位是弧度。(4294967296等于2的32次方)<BR>所有这些完成之后,将A、B、C、D分别加上a、b、c、d。然后用下一分组数据继续运行算法,最后的输出是A、B、C和D的级联。<BR><BR> 当你按照我上面所说的方法实现MD5算法以后,你可以用以下几个信息对你做出来的程序作一个简单的测试,看看程序有没有错误。<BR><BR> MD5 ("") = d41d8cd98f00b204e9800998ecf8427e<BR> MD5 ("a") = 0cc175b9c0f1b6a831c399e269772661<BR> MD5 ("abc") = 900150983cd24fb0d6963f7d28e17f72<BR> MD5 ("message digest") = f96b697d7cb7938d525a2f31aaf161d0<BR> MD5 ("abcdefghijklmnopqrstuvwxyz") = c3fcd3d76192e4007dfb496cca67e13b<BR> MD5 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") =<BR>d174ab98d277d9f5a5611c2c9f419d9f<BR> MD5 ("123456789012345678901234567890123456789012345678901234567890123456789<BR>01234567890") = 57edf4a22be3c955ac49da2e2107b67a<BR><BR> 如果你用上面的信息分别对你做的MD5算法实例做测试,最后得出的结论和标准答案完全一样,那我就要在这里象你道一声祝贺了。要知道,我的程序在第一次编译成功的时候是没有得出和上面相同的结果的。<BR><BR><BR> MD5的安全性<BR><BR> MD5相对MD4所作的改进:<BR><BR> 1. 增加了第四轮;<BR><BR> 2. 每一步均有唯一的加法常数;<BR><BR> 3. 为减弱第二轮中函数G的对称性从(X&Y)|(X&Z)|(Y&Z)变为(X&Z)|(Y&(~Z));<BR><BR> 4. 第一步加上了上一步的结果,这将引起更快的雪崩效应;<BR><BR> 5. 改变了第二轮和第三轮中访问消息子分组的次序,使其更不相似;<BR><BR> 6. 近似优化了每一轮中的循环左移位移量以实现更快的雪崩效应。各轮的位移量互不相同。</FONT><BR>页:
[1]