727
次編輯
變更
MD5
,無編輯摘要
|}
'''MD5''' [[ 信息摘要算法 ]] (英语:MD5 Message-Digest Algorithm),一种被广泛使用的 [[ 密码散列函数 ]] ,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。这套算法的程序在 RFC 1321 标准中被加以规范。1996年后该算法被证实存在弱点,可以被加以破解,对于需要高度安全性的数据,专家一般建议改用其他算法,如SHA-2。2004年,证实MD5算法无法防止碰撞(collision),因此不适用于安全性认证,如SSL公开密钥认证或是数字签名等用途。<ref>[ ], , --</ref>
==发展历史==
1992年8月,罗纳德·李维斯特向互联网工程任务组(IETF)提交了一份重要文件,描述了这种算法的原理。由于这种算法的公开性和安全性,在90年代被广泛使用在各种程序语言中,用以确保资料传递无误等。
D: 76 54 32 10
==处理数据段==
首先定义4个 [[ 非线性函 数F 数]]F 、G、H、I,对输入的报文运算以512位数据段为单位进行处理。对每个数据段都要进行4轮的逻辑处理,在4轮中分别使用4个不同的函数F、G、H、I。每一轮以ABCD和当前的512位的块为输入,处理后送入ABCD(128位)。
==输出==
信息摘要最终处理成以A, B, C, D 的形式输出。也就是开始于A的低位在前的顺序字节,结束于D的高位在前的顺序字节。
改变了第二轮和第三轮中访问消息子分组的次序,使其更不相似。
近似优化了每一轮中的循环左移位移量以实现更快的雪崩效应,各轮的位移量互不相同。
MD5 算法自诞生之日起,就有很多人试图证明和发现它的不安全之处,即存在碰撞(在对两个不同的内容使用 MD5算法运算的时候,有可能得到一对相同的结果值)。2009年,中国科学院的 [[ 谢涛 ]] 和 [[ 冯登国 ]] 仅用了
的碰撞算法复杂度,破解了MD5的碰撞抵抗,该攻击在普通计算机上运行只需要数秒钟。
==JavaScript实现==
{{reflist}}
[[Category: 310 數學總論 ]]