MD5改进算法及应用研究概要1.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MD5改进算法及应用研究概要1

MD5算法研究 摘要:哈希算法是现代密码学的核心,本文在给出MD5常见优化算法的基础上,采取两种思路对MD5进行改进,对对比。 关键词:MD5 MD5 Research CUI Yonghui1 JIA Lianxing2 LI Zhiwei3 Abstract: The HASH algorithm is the core of modern cryptography. The paper presents the common optimization algorithm based on MD5, and takes two means of improvement with programming on MD5 algorithm. We can make an intuitive understanding of the algorithm with the comparisons.At last, the application situation and the application effect of the algorithm are studied in this paper. Keywords: MD5; 802.1X; EAP-MD5 0.MD5算法 MD5算法对任意长度的文件进行不可逆变换,是按照固定的循环和计算对源数据信息进行加密,最终生成128位的加密数据。由于整个过程计算量比较大,而且过程非常繁琐,所以在算法实现时,会耗费大量的时间。 目前对MD5算法的研究及性能优化方法较多,主要体现在增强其加密强度和提高它的执行效率两个方面。通常考虑通过以下手段加以改进:一是改变MD5初始数值。把4个MD缓冲寄存器初始数值稍微更改,形成新消息摘要算法。二是改变sin函数值。算法中,sin函数从0开始每次累加1,可以更改为从64开始每次累减1,或者变sin函数为cos函数,变动的程序较易修改,也具有较好的移植性。是多次加密。实行单次消息摘要算法加密之后,针对产生的密码所有或者一些再次实行单次或者多次修改,使其更难在字典中快速查找。是查询库添加盐(salt)。客户设置密码过程中,产生随机盐(Salt),储存于另外的信息表或者查询库内,和客户口令彼此联系,之后使用hash函数针对盐(Salt)实行消息摘要算法加密,进而使逆向查询更难。 1改进 一是精简迭代次数为了提高其执行效率,降低MD5算法复杂度,可以适当精简MD5迭代次数64步至16步。MD5算法中的每一轮输入为当前处理的分组和128bit的缓存区ABCD,每轮都需要进行16步操作,四轮中可以以不同顺序使用分组的16位字。精简迭代次数的方案共有种,本文挑选的MD5迭代次数有两个方案,一个为主方案,另一个为备用方案。 方案一对应的挑选步次为: 第1轮: 第2轮: 第3轮: 第4轮: 方案二对应的挑选步次为 【2,3,4,5, 18,31,28,25, 35,46,41,36, 49,52,55,58】 二是嵌入汇编语言。实际上,嵌入汇编语言,实质是为了减少对内存的访问,提高代码执行效率,使数据在寄存器内部完成快速访问,而不需要反复访问内存。MD5C的代码虽然效率不高,但绝对优秀。一般而言,逻辑运算和四则运算的平均指令周期为4,而内存访问指令平均周期为10,内存访问指令将大大消耗程序访问时间。编程用到的寄存器共有EAX、EBX、ECX、EDX、ESI、EDI、MM1-MM713个寄存器,剩余的数据读取仍然在内存中加以实现。 通过编程查看改进后MD5算法的性能,并进行对比,包含四个算法实现。第一种算法是标准MD5 C++语言算法;第二种算法为减少迭代次数到16步的C++语言改进算法;第三种算法为嵌入汇编语言的MD5算法;第四种算法为嵌入汇编语言并减少迭代次数至16步的MD5改进算法。时间的取得是通过GetCpuTimeTickCount()函数取得。 图一:算法改进一 图二:算法改进二 Figure 1: MD5 algorithm with C++ Figure 2: The first improment 图三:算法改进三 图四:算法改进四 Figure 3: The second improment Figure 4: The third improment 通过以上运算结果,可以看到: 1、第一种优化算法字符串abc”的散列值发生了改变,单次运算结果比优化前有了改进,10万次运算结果比优化前提高了约1/8的时间效率。 2、第二种优化算法字符串abc”的散列值并没有发生改变,单次运算结果比优化

文档评论(0)

yaocen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档