简单地说, MD5 是一种单向字串杂凑演算 (hashing) ,其可将你所给予的任何长度字串, 使用 MD5 杂凑演算法,得出一个长度为 128 位元 ( 16 个字元) 的计算结果, 以下以键值称之。
举例来说,你将 "ROCK" 这个字串,使用 MD5 演算的话,就会得到一个 128 位元的计算结果,以字串型式表示的话,则如同下行:
MD5 ("ROCK") = afeb717aa2a101f7f64840e0be38c171
用字串表示时,是把 128 位元的计算结果 (术语称之为 "digest code") ,转成十六进位码形式的字串,此字串需要 32 个字元空间 (即 256 位元)。
MD5 的其他说明条列如下:
固定的字串内容必定会得出一个固定的键值,而非每次都算出不同的。
这是一个单向的杂凑演算,意味着,它虽可每次都将同样的字串内容,算 出同样的键值,但它无法从键值反推算出原本的字串内容。
不同字串内容所演算出来的键值,有可能相同,但根据统计,重覆的机率小于百万分之一,以重覆率来说,是相当好的演算法。
演算速度快,对硬体的要求很低。
它可以演算任意长度的字串内容,而且能得出固定长度的键值。
就算字串内容只相差一个字,它也能算出完全不同的键值。
键值长达 128 位元,而且可接受任何长度的字串,就密码的安全性来讲,比过去常用的 DES 编码法还好。 DES 编码法,只能接受 8 个字元长度的字串,产生的键值只有 56 位元。
就最后两项,举个例子来验证,如下:
MD5 ("ROCK") = afeb717aa2a101f7f64840e0be38c171
MD5 ("RACK") = 1ece4bad0efe8b897c6e7f8bd101759f
MD5 ("ROCKY") = 6cd910740cbbbbd0f55238a93fba157d
MD5 ("Rock'S saying") = 7dca0df0dfa7f76b652e53daa4852640
最后要提的是, MD5 演算法,是由 RSA Data Security, Inc 公司所提出的。
以上撷取自
石头闲语,真有兴趣可以去参观了解.