Md5简介【摘自99Bill接口说明文档】

MD5算法简介。
MD5 的全称是Message
-Digest Algorithm 5(信息-摘要算法),在90 年代初由MIT
Laboratory 
for Computer Science和RSA Data Security Inc的Ronald L. Rivest开发出来,经
MD2、MD3 和MD4 发展而来。它的作用是让大容量信息在用数字签名软件签署私人密匙
前被
"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数)。不
管是MD2、MD4 还是MD5,它们都需要获得一个随机长度的信息并产生一个128 位的信
息摘要。虽然这些算法的结构或多或少有些相似,但MD2 的设计与MD4 和MD5 完全不
同,那是因为MD2是为8位机器做过设计优化的,而MD4和MD5却是面向32位的电脑。
这三个算法的描述和C 语言源代码在Internet RFCs 
1321 中有详细的描述
http:
//www.ietf.org/rfc/rfc1321.txt),这是一份最权威的文档,由Ronald L. Rivest在1992 年
8 月向IEFT提交。
Rivest在1989年开发出MD2算法。在这个算法中,首先对信息进行数据补位,使信息
的字节长度是16的倍数。然后,以一个16位的检验和追加到信息末尾。并且根据这个新产
生的信息计算出散列值。后来,Rogier 和Chauvaud 发现如果忽略了检验和将产生MD2 冲
突。MD2 算法的加密后结果是唯一的
--既没有重复。
为了加强算法的安全性,Rivest 在1990 年又开发出MD4 算法。MD4 算法同样需要填
补信息以确保信息的字节长度加上448后能被512 整除(信息字节长度mod 
512 = 448)。
然后,一个以64 位二进制表示的信息的最初长度被添加进来。信息被处理成512 位
Damg
?rd/Merkle 迭代结构的区块,而且每个区块要通过三个不同步骤的处理。Den Boer 和
Bosselaers 以及其他人很快的发现了攻击MD4 版本中第一步和第三步的漏洞。Dobbertin 向
大家演示了如何利用一部普通的个人电脑在几分钟内找到MD4完整版本中的冲突(这个冲
突实际上是一种漏洞,它将导致对不同的内容进行加密却可能得到相同的加密后结果)。毫
无疑问,MD4就此被淘汰掉了。
尽管MD4算法在安全上有个这么大的漏洞,但它对在其后才被开发出来的好几种信息
安全加密算法的出现却有着不可忽视的引导作用。除了MD5 以外,其中比较有名的还有
SHA
-1、RIPE-MD 以及HAVAL等。
一年以后,即1991 年,Rivest开发出技术上更为趋近成熟的MD5算法。它在MD4 的
基础上增加了
"安全-带子"(Safety-Belts)的概念。虽然MD5 比MD4 稍微慢一些,但却更
为安全。这个算法很明显的由四个和MD4 设计有少许不同的步骤组成。在MD5 算法中,
信息
-摘要的大小和填充的必要条件与MD4 完全相同。Den Boer 和Bosselaers 曾发现MD5
算法中的假冲突(Pseudo
-Collisions),但除此之外就没有其他被发现的加密后结果了。
Van Oorschot 和Wiener 曾经考虑过一个在散列中暴力搜寻冲突的函数(Brute
-Force Hash
Function),而且他们猜测一个被设计专门用来搜索MD5冲突的机器(这台机器在1994年
的制造成本大约是一百万美元)可以平均每24 天就找到一个冲突。但单从1991 年到2001
年这10年间,竟没有出现替代MD5算法的MD6或被叫做其他什么名字的新算法这一点,
我们就可以看出这个瑕疵并没有太多的影响MD5 的安全性。上面所有这些都不足以成为
MD5 的在实际应用中的问题。并且,由于MD5 算法的使用不需要支付任何版权费用的,
快钱安全支付网关商户接口规范
Copyright © 上海快钱信息服务有限公司 
2004-2005
11
所以在一般的情况下(非绝密应用领域。但即便是应用在绝密领域内,MD5 也不失为一种
非常优秀的中间技术),MD5怎么都应该算得上是非常安全的了
posted @ 2007-05-31 11:56  roboth  阅读(647)  评论(0编辑  收藏  举报