MD4 散列算法step-by-step.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MD4散列算法(或称信息摘要算法) Rivest(RSA公司首度科学家,MIT博士,1990年提出 MD4,1991年提出增强版MD5。1992年提出SHA公布 于1992年1月31日的联帮记录上,并于1993年5月11日采 纳作为标准。这些散列函数运算起来非常快,都源于同 一思想。它们对于签名非常长的消息是适用的。 为了讲清Rivest的想法,还是从MD4讲起。 MD4:给定一个消息比特串x,使用如下算法来构造M: 设d=447-(|x|(mod 512)) l表示|x|(mod 264)的二进制表示,|l|=64 M=x||1||Od||l 在M的构造中。在x后面附上一个1,然后并上足够多 的0使得长度变成模512(=29)与448用余的数,最后并 上64bit的l,它是x的长度的二进制表示。(注意:若必 要的话,用模264约简)。易见,512|1M。 将M表示成阵列形式: M=M[0]M[1]…M[N-1] 其中每一个M[i]是一个长度为32bit的串且N?0(mod 16)。 我们称每一个M[i]为一个字。 下面从着手,构造关于x的128bit的消息摘要。算 法描述如下: 1°给出寄存器A,B,C,D,第一步初始化: A (16进制) B=efcdab89 (16进制) C=98badcfe (16进制) D (16进制) 2°对i=0到N/16-1做: 3°对j=0到15做X[j]=M[16i+j]每次处理陈列M的16个字! 4°AA=A,BB=B,CC=C,DD=D 5°轮1; 6°轮2; 7°轮3; 8°A=A+AA,B=B+BB,C=C+CC,D=D+DD 消息摘要为A||B||C||D……128bits!! 解释与说明: (1)四个寄存器在第一步初始化。从此,每次处理陈列 M的16个字。在第2°步的每完成一个循环选代,接着取 M的“下一个”16个字,然后把它存贮在陈列X中(第3° 步);按着将4个寄存器的值存贮起来(第4°步)。然 后完成三轮散列。每一轮由作用于X中的16个字中的每 一个相关运算组成;在三轮中的运算结果产生的新的4个 寄存器的值。最后,第8°步中4个寄存器的值通过加上 第4°步中存贮的值来更新。这个加法定义为正整数加法, 用模232来约简。 (2)在MD4中三轮是不同的,它们使用的运算描述如 下:(注意,X和Y表示输入字,每一个运算产生一个字 作为输出。) X^Y :X和Y的逐比特“与”; XVY:X和Y的逐比特“或”; X?Y:X和Y的逐比特“异或”; :X的逐比特取补; X+Y:模232的整数加法; X<<S:X循环左移S位(O≤S≤31) MD4的轮1,2,3分别使用了函数f,g和h。 它们的定义如下:注意,取三个字做为输入! f(X,Y,Z)=(X∧Y)V( ∧Z) g(X,Y,Z)=(X∧Y)V(X∧Z)V(Y∧Z) h(X,Y,Z)=X?Y?Z 设计的MD4是非常快的,且实际上在Sun SPARC工作 站上软实现可达速度1.4M bytes/S。另一方面,具体地谈 论象MD4这样的散列函数的安全性是困难的,因为它不 是基于一个已经很好研究过的问题,如大整数分解,离 散对数问题。所以,象采用DES的情况一样,仅能在一段 时间内取得对该体制的安全性的信任。 另外,MD4的增强版本称为MD5,于1991年提出。 MD5使用了四轮来代替MD4的三轮,且运算速度大约比 MD4慢30%。(在SPARC工作站上大约为0.9Mbytes/S)。 下面给出MD4中,轮1,2,3的完整描述: MD4中的第一轮: 1°A=(A+f(B,C,D)+X[0])<<3, 2°D=(D+f(A,B,C)+X[1])<<7, 3°C=(C+f(D,A,B)+X[2])<<11, 4°B=(B+f(C,D,A)+X[3])<<19, 5°A=(A+f(B,C,D)+X[4])<<3, 6°D=(D+f(A,B,C)+X[5])<<7, 7°C=(C+f(D,A,B)+X[6])<<11, 8°B=(B+f(C,D,A)+X[7])<<19; 9°A=(A+f(B,C,D)+X[8])<<3, 10°D=(D+f(A,B,C)+X[9])<<7, 11°C=(C+f(D,A,B)+X[10])<<11, 12°B=(B+f(C

文档评论(0)

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

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

1亿VIP精品文档

相关文档