翻译自http://www.diablotin.com/librairie/networking/puis/ch06_05.htm
Message Digest(信息摘要,也被称为cryptographic checksum校验和加密、cryptography hashcode哈希加密)
- 一串数字
- 难以逆向推导的 方程式 算出来的hash code。
- 输入值长度不一(文件大小各异),通过方程式,得出定长的Hash code。
- 一般是128bit或512bit。
有两个特性:
- 方程式无法被预测和反推。即通过输出 推不出输入。
- 128bit有1.7X10的38次方种可能。现有技术是不可能推测出来的。
- 输入值 一个小的改动,将带来巨大的 输出改变。改一个bit的输入,导致近乎一半的输出改变
然而,通过Message Digest 可确定 文件未被修改,但无法确定是谁发送的。
(黑客将文件篡改,MessageDigest再算下,无法确定是 用户、还是黑客发的)
Digital Signature(数字签名)
Message Digest为可信赖的数字签名提供了一半的解决方法,另一半是Public Key Encryption 公钥加密算法。(确定发送方)
公钥加密算法是:
Public key:用于加密信息的key,通常广泛的传播。
Secret key(Private Key):用于解密的接收到的信息,通常自己保留。
将Public Key Encryption做一下反转,将解密的Key公布,将加密的Key自己保留。这样发布方签名发布的信息,大家都可以用发布方的解密Key解出来,还原他。证明是发布发送的。
特点是:
1.Integrity (完整性)确保信息没有被改变
2.Authentication可以验证是谁发送的信息
实践
虽然,签名可确保文件完整性、可信发送方。 但运算耗时;
实践上 使用Message Digital生成固定长度的Hash Code,然后在对Hash Code签名。
确保了 文件的完整性、可信性 和 效率
常用Message Digest算法
MD2、MD4、MD5:
MD5是最常用的。均产生128bit的数字长度。MD2速度慢,之后有了更快速的MD4,因MD4安全性问题,出了MD5。MD5比MD4慢点。
简单说用MD5。目前最新,均衡性最好。
SHA:
Secure Hash Algorithm,和MD4很像,不同点是产出为160bit而不是128bit。
HAVAL:
MD5的改进版,可以产出不同的长度数据,从92bit到256bit。所以在安全性与速度上你可以自己调节。
SNEFRU:
产出128bit或256bit两中长度数据,比MD5和HAVAL慢。