组织:中国互动出版网(http://www.china-pub.com/)rfc文档中文翻译计划(http://www.china-pub.com/compters/emook/aboutemook.htm)e-mail:ouyang@china-pub.com译者:()译文发布时间:2001-11-7版权:本中文翻译文档版权归中国互动出版网所有.可以用于非商业用途自由转载,但必须保留本文档的翻译及版权信息.
network working group r. rivestrequest for comments: 1321 mit laboratory for computer science and rsa data security, inc. april 1992 【程序编程相关:TextField中进行字符的输入限制】
【推荐阅读:简单介绍javabean 和 ejb 的】
本文地位本文并非指定一个internet标准,而是向互联网提供信息,本文可以任意传播,不受限制.致谢don coppersmith, burt kaliski, ralph merkle,david chaum, 与noam nisan向本文提供极大的帮助,在此本人表示忠心的感谢. 【扩展信息:类的设计方法】
md5 报文摘要算法(rfc1321——the md5 message-digest algorithm)
目录1 执行简介 12 术语与符号 13 md5算法描述 24 摘要 45 md4与md5的区别 46 参考文献 47 附录a-参考应用程序 48 安全事项 189 作者地址 18
1 执行简介本文描述了md5报文摘要算法,此算法将对输入的任意长度的信息进行计算,产生一个128位长度的“指纹”或“报文摘要”,假定两个不同的文件产生相同的报文摘要或由给定的报文摘要产生原始信息在计算上是行不通的.md5算法适合用在数据签名应用中,在此应用中,一个大的文件必须在类似rsa算法的公用密钥系统中用私人密钥加密前被“压缩”在一种安全模式下.md5算法能在32位机器上能以很快的速度运行.另外,md5算法不需要任何大型的置换列表.此算法编码很简洁.md5 算法是md4报文摘要算法的扩展.md5算法稍慢于md4算法,但是在设计上比md4算法更加“保守”.设计md5是因为md4算法被采用的速度太快,以至于还无法证明它的正确性,因为md4算法速度非常快,它处在遭受成功秘密攻击的“边缘”.md5后退了一步,它舍弃了一些速度以求更好的安全性.它集中了不同的评论家提出的建议,并采取了一些附加的优化措施.它被放在公共的地方以求公众的评论意见,它可能当作一个标准被采纳.作为基于osi的应用,md5的对象标识符是:md5 object identifier ::=iso(1) member-body(2) us(840) rsadsi(113549) digestalgorithm(2) 5} 在x.509类型algorithmidentifier [3]中,md5算法参数应该包括null类型.2 术语与符号本文中一个“字”是32位,一个“字节”是8位.一系列位串可看成是一系列字节的普通形式,其中的连续的8位看成一个字节,高位在前,同理一系列字节串可看成是一系列32位的字,其中每个连续的4个字节当作一个字,地位在前.我们定义x_i代表“x减去i".如果下划线左边的是一个表达式,则用括号括住,如:x_{i+1}.同样我们用^代表求幂,这样x^i则代表x的i次幂.符号“+”代表字的加,x <<< s代表32位的值x循环左移s位,not(x)代表x的按位补运算,x v y 表示x与y的按位或运算,xxory代表x与y的按位异或运算,xy代表x与y的按位与运算.3 md5算法描述我们假设有一个b位长度的输入信号,希望产生它的报文摘要,此处b是一个非负整数,b也可能是0,不一定必须是8的整数倍,它可能是任意大的长度.我们设想信号的比特流如下所示: m_0 m_1 ... m_{b-1}下面的5步计算信息的报文摘要.(1) 补位md5算法是对输入的数据进行补位,使得如果数据位长度len对512求余的结果是448.即数据扩展至k*512+448位.即k*64+56个字节,k为整数.补位操作始终要执行,即使数据长度len对512求余的结果已是448. 具体补位操作:补一个1,然后补0至满足上述要求.总共最少要补一位,最多补512位.(2) 补数据长度 用一个64位的数字表示数据的原始长度b,把b用两个32位数表示.那么只取b的低64位.当遇到b大于2^64这种极少遇到的情况时,这时,数据就被填补成长度为512位的倍数.也就是说,此时的数据长度是16个字(32位)的整数倍数.用m[0 ... n-1]表示此时的数据,其中的n是16的倍数.... 下一页