數(shù)字摘要是將任意長度的消息變成固定長度的短消息,它類似于一個自變量是消息的函數(shù),也就是Hash函數(shù)。數(shù)字摘要就是采用單向Hash函數(shù)將需要加密的明文“摘要”成一串固定長度(128位)的密文這一串密文又稱為數(shù)字指紋,它有固定的長度,而且不同的明文摘要成密文,其結果總是不同的,而同樣的明文其摘要必定一致。
一個Hash函數(shù)的好壞是由發(fā)生碰撞的概率決定的。如果攻擊者能夠輕易地構造出兩個消息具有相同的Hash值,那么這樣的Hash函數(shù)是很危險的。一般來說,安全Hash標準的輸出長度為160位,這樣才能保證它足夠的安全。 這一加密方法亦稱安全Hash編碼法(SHA:Secure Hash Algorithm)或MD5(MD Standards for Message Digest),由Ron Rivest所設計。該編碼法采用單向Hash函數(shù)將需加密的明文“摘要”成一串128bit的密文,這一串密文亦稱為數(shù)字指紋(Finger Print),它有固定的長度,且不同的明文摘要成密文,其結果總是不同的,而同樣的明文其摘要必定一致。這樣這摘要便可成為驗證明文是否是“真身”的“指紋”了。
一般來說,非對稱加密是用來處理短消息的,而相對于較長的消息則顯得有些吃力。當然,可以將長的消息分成若干小段,然后再分別簽名。不過,這樣做非常麻煩,而且會帶來數(shù)據(jù)完整性的問題。比較合理的做法是在數(shù)字簽名前對消息先進行數(shù)字摘要。
(1) 被發(fā)送文件用SHA編碼加密產生128bit的數(shù)字摘要。
(2) 發(fā)送方用自己的私用密鑰對摘要再加密,這就形成了數(shù)字簽名。
(3) 將原文和加密的摘要同時傳給對方。
(4) 對方用發(fā)送方的公共密鑰對摘要解密,同時對收到的文件用SHA編碼加密產生又一摘要。
(5) 將解密后的摘要和收到的文件在接收方重新加密產生的摘要相互對比。如兩者一致,則說明傳送過程中信息沒有被破壞或篡改過。否則不然。