资源描述:
《MD5改进算法及应用研究》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、MD5算法改进及其应用研究摘要:哈希算法是现代密码学的核心,本文在给出MD5常见优化算法的基础上,采取两种思路对MD5进行改进,并对改进结果进行对比。同时对算法的应用场合及其应用效果进行了研究。关键词:MD5;802」X;EAP-MD5MD5ResearchCUIYonghui1JIALianxing2LIZhiwei3Abstract:TheHASHalgorithmisthecoreofmoderncryptography.ThepaperpresentsthecommonoptimizationalgorithmbasedonMD5,andtakestwomeansof
2、improvementwithprogrammingonMD5algorithm.Wecanmakeanintuitiveunderstandingofthealgorithmwiththecomparisons.Atlast,theapplicationsituationandtheapplicationeffectofthealgorithmarestudiedinthispape匚Keywords:MD5;802.1X;EAP-MD50.MD5算法MD5算法山对任意长度的文件进行不可逆变换,是按照固定的循环和计算对源数据信息进行加密,最终生成128位的加密数据。由于整个
3、过程计算量比较大,而且过程非常繁琐,所以在算法实现时,会耗费大量的时间。目前对MD5算法的研究及性能优化方法较多l2JI3Jl4J,主要体现在增强其加密强度和提高它的执行效率两个方面。通常考虑通过以下手段加以改进:一是改变MD5初始数值。把4个MD缓冲寄存器初始数值稍微更改,形成新消息摘要算法。二是改变sin函数值。算法中,sin函数从0开始每次累加1,可以更改为从64开始每次累减1,或者变sin函数为cos函数,变动的程序较易修改,也具有较好的移植性。三是多次加密。实行单次消息摘要算法加密之后,针对产生的密码所有或者一些再次实行单次或者多次修改,使其更难在字典中快速查找。四
4、是查询库添加盐(salt)o客户设置密码过程中,产牛随机盐(Salt),储存于另外的信息表或者查询库内,和客户口令彼此联系,之后使用hash函数针对盐(Salt)实行消息摘要算法加密,进而使逆向查询更难。1算法改进•是精简迭代次数,为了提高其执行效率,降低MD5算法复杂度,可以适当精简MD5迭代次数64步至16步。MD5算法中的每一轮输入为当前处理的分组和128bit的缓存区ABCD,每轮都需要进行16步操作,四轮中可以以不同顺序使用分组的16位字。精简迭代次数的方案共有(^x^xC'xC;)4=16777216种,本文挑选的MD5迭代次数有两个方案,一个为主方案,另一个为备
5、用方案。方案一对应的挑选步次为:第1轮:FF(a,b,c,d,,7,0xd76dd478)1FF(d,a,b,c,MJ2,0xe8c7/?756)2FF(c,d,a,b,M?,17,0x242070〃)3FF(b,c,d,a,,22,Oxdbdceee)4第2轮:GG(d,a,b,c,M(、,9,0xc040/?340)18GG(q,b,c,d,M“5,0x^62/105J)21GG(b,c,d,a,My20,0xe7d3JbcS)24GG(c,d,a,b,M7,14,0x676f02d9)31第3轮:HH(d,ct,b,c,MJ1,0x8771/681)34HH(c,d,a
6、,b,MJ6,0x6d9d6122)35HH(b,c,a,MI。,23,OxbebfbclO)40HH@,b,c,d,M9,4,0M9d4d039)45第4轮:〃(c,d,a,方,Mg,15,0xab9423al)51II(a,b,c,d,Ml2,6,Ox655/?59c3)53〃(d,a,b,c,M]5,10,0xfe2ce6e0)58II(b,c,d,a,M]3,21,0x4^081a)60方案二对应的挑选步次为[2,3,4,5,1&31,28,25,35,46,41,36,49,52,55,58】二是嵌入汇编语言。实际上,嵌入汇编语言,实质是为了减少对内存的访问,
7、提高代码执行效率,使数据在寄存器内部完成快速访问,而不需要反复访问内存。MD5C的代码虽然效率不高,但绝对优秀。一般而言,逻辑运算和四则运算的平均指令周期为4,而内存访问指令平均周期为10,内存访问指令将大大消耗程序访问时间。编程用到的寄存器共有EAX、EBX、ECX、EDX、ESLEDLMM1-MM7共计13个寄存器,剩余的数据读取仍然在内存中加以实现。通过编程查看改进后MD5算法的性能,并进行对比,包含四个算法实现。第一种算法是标准MD5C++语言算法;第二种算法为减少迭代次数到16步的C++语言改