MD5报文摘要算法,是将对输入的任意长度的信息进行计算,产生一个128位长度的“指纹”或“报文摘要”,假定两个不同的文件产生相同的报文摘要或由给定的报文摘要产生原始信息在计算上是行不通的。
执行简介
MD5报文摘要算法,是将对输入的任意长度的信息进行计算,产生一个128位
长度的“指纹”或“报文摘要”,假定两个不同的文件产生相同的报文摘要或由给定的报文摘要产生
原始信息在计算上是行不通的。
MD5算法适合用在数据签名应用中,在此应用中,一个大的文件必
须在类似
RSA算法的公用密钥系统中用私人密钥加密前被“压缩”在一种安全模式下。
MD5算法能在32位机器上能以很快的速度运行。另外,MD5算法不需要任何大型的置换列表。
此算法编码很简洁。
MD5算法是MD4报文摘要算法的扩展。MD5算法稍慢于MD4算法,但是在设
计上比MD4算法更加“保守”。设计MD5是因为MD4算法被采用的速度太快,以至于还无法证明
它的正确性,因为MD4算法速度非常快,它处在遭受成功秘密攻击的“边缘”。MD5后退了一步,
它舍弃了一些速度以求更好的安全性。它集中了不同的评论家提出的建议,并采取了一些附加的优化
措施。它被放在公共的地方以求公众的评论意见,它可能当作一个标准被采纳。
作为基于OSI的应用,MD5的对象标识符是:
md5OBJECTIDENTIFIER::=
iso(1)member-body(2)US(840)rsadsi(113549)digestAlgorithm(2)5
在X.509类型AlgorithmIdentifier[3]中,MD5算法参数应该包括NULL类型。
术语和符号
本文中一个“字”是32位,一个“
字节”是8位。一系列位串可看成是一系列字节的普通形式,
其中的连续的8位看成一个
字节,高位在前,同理一系列字节串可看成是一系列32位的字,其中每
个连续的4个字节当作一个字,地位在前。
我们定义x_i代表“x减去I”.如果下划线左边的是一个
表达式,则用括号括住,如:
x_{i+1}。同样我们用^代表求幂,这样x^i则代表x的i次幂。
符号“+”代表字的加,X<<<s代表32位的值X循环左移s位,not(X)代表X的按位
补运算,XvY表示X和Y的按位或运算,XxorY代表X和Y的按位异或运算,XY代表
X和Y的按位与运算。