1. 程式人生 > >Message Digests和Digital Signature (資訊摘要和數字簽名的區別),MD5、RSA、SHA

Message Digests和Digital Signature (資訊摘要和數字簽名的區別),MD5、RSA、SHA

翻譯自http://www.diablotin.com/librairie/networking/puis/ch06_05.htm

Message Digest(資訊摘要,也被稱為cryptographic checksum校驗和加密、cryptography hashcode雜湊加密)

就是一串數字,通過一個很難被逆向推到的公式 算出來的hash code。

將不確定長度的輸入(檔案大小各異)方程式,然後得出固定大小的Hash code。一般結果的長度是128bit或512bit。

有兩個特性:

1.這個方程式無法被預測和反推。也就說通過結果無法反推出輸入,128bit有1.7X10的38次方中可能。以現有技術是不可能推測出來的。

2.輸入方一個小的改動,將帶來巨大的輸出改動。改一個bit的輸入,導致近乎一半的輸出改變。

然而,通過Message Digest 可以確定檔案沒有被改動,但無法確定是誰傳送的。

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 Digest,但是Digital Signature的運算特別的耗時、複雜。所以我們就使用快速的Message Digital生成固定長度的Hash Code,然後在對Hash Code簽名。這樣既可以保證文件的完整性,又可以保證權威性、又有效率。

而Message Digital的

常用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慢。