MD5验证技术讨论和改进设想.docVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE PAGE 1 MD5验证技术讨论和改进设想   摘要:随着网络走入人们的生活当中,各种需要验证用户身份的站点也日益增多,目前各种盗取用户信息的病毒、木马十分泛滥。网站为了保护用户信息多会采用类似MD5的算法对用户信息进行加密,但这种算法的广泛应用也使针对它的破解方法和软件层出不穷。该文提供了一种简单的思路改进MD5算法,使其不会被专门的软件破解。   关键词:病毒;MD5算法   中图分类号:TP393文献标识码:A文章编号:1009-3044(2013)05-1022-03   1绪言   在现在的网络环境下,病毒木马十分泛滥,而大多数普通用户有没有足够的专业知识来保护自身信息安全,尤其是账户信息。网上常见的各类系统和社区中为了确保账户安全,在登陆页面中采用了MD5等算法[1]加密密码信息。对用户输入的密码信息进行转换,将转换后的代码再存入数据库的用户信息表中,这样就算密码信息在传输过程中被拦截或者系统所在服务器数据库信息泄露,也不会直接造成用户密码暴漏。而随着MD5算法的广泛应用,响应的各类破解工具也逐渐多了起来,下文我们讨论对MD5算法进行简单的变化,从而达到保护信息的目的。   2单向散列函数   MD5算法最初来源于单向散列函数也叫做哈希函数,它是密码学中最重要的部分。散列函数在计算机科学中使用有着广泛的应用,它是把可变长度的输入串转换成固定长度输出散列值的一种函数。而单向散列函数是只在一个方向上成立的散列函数,可以从预映射的值计算出它的散列值,但很难使它的散列值等于一个特殊值。   散列函数的算法是公开的,它的中间过程不保密。单向散列函数的安全性是依赖于它的单向性,并不依赖于其输出、输入。一般来说预映射值的单个位数字改变,将导致散列值中一半左右的数字改变。因此已知一个散列值,要找到预映射的数,使它的映射值等于散列值在理论上是不可行的,我们也可以把单向散列函数看作是一种特殊的数据结构。如果需要验证某人持有的一个文件,你有文件的样本,但不想直接进行文件比较,那么就要通过单向散列函数求出该文件的散列,如果两个散列值是一直的,那么可以确认他持有那份文件。   单向散列函数F(X)是对一个任意长度的数据X进行运算。返回一固定长度的数据x。   x=F(X)   其中x的长度为m。   这样输入为任意长度且输出为固定长度的函数有很多种,但单向散列函数具有如下特性:   1)给定值X,可以很方便地计算出x值。   2)给定x,根据F(X)=x计算x很难。   3)给定X,要找到另一则数据X并使得F(x)=F(x)很难。   这样才能保证,如果入侵者想要获得数据,它必须破解掉所有运用单向函数协议的安全性,单向性函数的关键在于产生X的一个唯一的数据x。   实际上,单向散列函数依赖于压缩函数的思想。单向散列函数的输出为一个长度为n的散列数值,其长短远小于输入数值长度m,即n   hi=f(Xi,hi-1)   同时该散列输出值又将作为下面运算的输入参数,从这里可以得出,整个数据的散列值x就是最后一个数据片段经计算所得的散列值。因此我们最终得到的将是一个固定长度的函数值。   3MD算法   MD5算法就是是在利用单向散列函数的一种在计算机安全领域广泛使用的算法函数,它可以用来为使用者提供资料的完整性的保护。算法以512位为单位分组处理数据,每一分组又划分为16个32位子数据。算法的输出固定由4个32位数据组成,将它们串在一起形成一个128位加密后的散列值。它的过程可以归纳为五个步骤。   1)预处理   MD5算法的第一步是在原始数据中增加填充,其作用是使原始数据长度等于一个特殊的数值,即比512的整数倍少64位。比如,如果最初的数据长为999位,则要填充473位,使数据长度为1472位,因为64+1472=1536,是512的倍数(1536=512*3)。   2)调整数据   对数据进行完预处理后,下面就要计算数据原长,将原长加进填充后的数据尾部。计算数据长度时不包括填充位长度,如果原数据为999位,则填充473位,使其变成比512的倍数(1536)少64位,但长度为999,而不是1472。然后将这个长度表示为64位值,添加到加进填充后的数据末尾。如果数据长度超过64位,则只添加较低的64位。   3)分割数据为512位的块   将要进行变换的输入数据分成每个512位大小的块。   4)初始化变量   这一步我们需要预置四个变量,分别称为A,B,C,D,它们需为32位的数字,并且数值要是下面表格中的这些十六进制值。   5)数据变化   在完成上面四个步骤后的数据,要对其进行多个循环处理。处理完成后的数值就是加密过的数据。如:   MD5()=d41d8cd98f00b204e9800998ecf8427e;

文档评论(0)

yingzhiguo + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:5243141323000000

1亿VIP精品文档

相关文档