不管是MD5还是SHA,这一切的根本都是哈希算法,即单向函数
MD5
全称为 消息摘要算法版本5 (Message Digest Algorithm 5)
首先我要强调的是,MD5并不是加密算法,它是一种哈希散列算法。
但是其往往可以应用于信息安全方面。
MD5其实就是把一串不定长的信息变为定长的信息,实际应用中MD5的值是128bit,也就是任何长度的信息经过MD5的哈希算法最终都会变为128bit的数据。这点与CRC是类似的。
例如我以奇偶检验的方式作为哈希算法进行hash:
我由原始数据进行分组散列计算一定能得到最终MD5值0000011,但是我给你最终的MD5值你却无法得到我的原始数据,因为这样的分组组合太多了,这只是MD5的一个思想示例,实际的hash算法一定复杂的多,并且可以很好的解决冲突问题;所以MD5 的特点:
MD5特点:
1.不可逆性 — 根据 MD5 值计算不出原始数据
2.唯一性 — 不同原始数据会有不同的 MD5 值 (不完全可靠,后面说)