- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Hash函数 MD5
Hash函数MD5算法 Hash函数 “Hash函数一词最初来源于计算机科学,表示可以将任意长度的字符串压缩成固定长度的字符串的函数,Hash函数的输出结果,称为Hash值,又称为消息摘要、指纹等。 Hash函数设计原则 Hash函数的算法是公开的,实际应用中,安全的Hash函数必须符合以下三个设计原则: Hash函数类别 Hash函数有上述三个安全特性,由于这些特性,Hash函数在公钥密码、数字签名、完整性检验、身份认证等领域中有着广泛的应用。 MD5算法 Md5的全称是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由Mit Laboratory For Computer Science和Rsa Data Security Inc的Ronaldl.rivest开发出来,经md2、md3和md4发展而来。它的作用是让大容量信息在用数字签名软件签署私人密钥前被“压缩”成一种保密的格式。 MD5算法 2004年8月17日的美国加州圣巴巴拉的国际密码学会议上,山东大学的王小云教授做了破译MD5、HAVAL-128、 MD4和RIPEMD算法的报告,提出了一套新的针对MDx系列的Hash函数的分析技术,同时给出了得到满足差分路线的充分条件的方法,以及如何使用明文修改技术来提高碰撞攻击的成功概率。公布了MD系列算法的破解结果,标志着MD5加密算法不再是一种安全的加密算法。 MD5算法 2005年,王小云等应用此技术对MD5、SHA-0、SHA-1算法进行碰撞攻击,取得了很好的效果,在普通的个人电脑上就可以找到相关碰撞的实例。这一攻击技术对现有的Hash函数提出了严峻的挑战,促进了新的Hash算法的开发研究:美国NIST于2007年开始在全球征集新的Hash算法。截至2008年11月,一共提交了64个入选算法;2008年12月有51个算法被NIST接收作为第一轮的候选算法;2009年7月,NIST公布了进入第二轮的14个算法;2010年将公布进入最终一轮的5个算法;最终将于2012年选出获胜算法并命名为SHA-3。 MD5算法 虽然王小云教授公布了破解MD5算法的报告,宣告该算法不再安全,但是对于公司以及普通用户来说,从算法上来破解MD5非常困难,因此MD5仍然算是一种安全的算法。 MD5是一个安全的散列算法,输入两个不同的明文不会得到相同的输出值,根据输出值,不能得到原始的明文,即其过程不可逆;所以要解密MD5没有现成的算法,只能用穷举法,把可能出现的明文,用MD5算法散列之后,把得到的散列值和原始的数据形成一个一对一的映射表,通过比在表中比破解密码的MD5算法散列值,通过匹配从映射表中找出破解密码所对应的原始明文。 MD5算法描述 MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。 MD5算法描述 步骤一:附加填充位 对报文填充使报文的长度(比特数)与448模512同余。即填充比特使长度为512的整数倍减去64。 MD5算法描述 步骤二:附加长度值 将用64比特表示的初始报文 (填充前)的位长度附加在步骤一 的结果后(低位字节优先)。如果 初始长度大于2^64,仅使用该长度 的低64比特。 MD5算法描述 步骤二:附加长度值 经扩展的报文表示成512比特的分组序列列Y1、Y2、Y3……Y(n-1),因此扩展的报文长度等于L乘512比特。与之等价的是,该结果也等于字长为16比特或32比特的整数倍。 MD5算法描述 步骤三:初始化MD缓冲区 使用一个128比特的缓存来存放该散列函数的中间值及最终结果。该缓存可表示为4个32比特的寄存器(ABCD)。A=0B=0xEFCDAB89,C=0x98BADCFE,D=0这些值以低位字节放在在前的格式存储: AB=89ABCDEF,C=FEDCBA98,DMD5算法描述 步骤四:处理512比特报文分组序列 算法的核心是一个包含四个“循环”的压缩函数,右图为单个512比特分组MD5处理过程: MD5算法描述 步骤五:输出 所有L个512比特的分组处理完成后,第L阶段产生的输出便是128比特的报文摘要。说明:最后的输出是A,B,C和D的级联。最后得到的A,B,C,D就是输出结果,A是低位,D为高位,DCBA组成128位输出结果。 MD5算法描述 步骤四中,四个循环有相似的结构,但每次循环使用不同的原始逻辑函数,说明中表示为FGHI。每一循环都以当前的正在处理的5
文档评论(0)