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