常用消息摘要算法介紹


消息摘要算法

介紹:

數據摘要算法是密碼學算法中非常重要的一個分支,它通過對所有數據提取指紋信息以實現數據簽名、數據完整性校驗等功能,由於其不可逆性,有時候會被用做敏感信息的加密。數據摘要算法也被稱為哈希(Hash)算法或散列算法。
 
消息摘要算法的主要特征是加密過程不需要密鑰,並且經過加密的數據無法被解密,只有輸入相同的明文數據經過相同的消息摘要算法才能得到相同的密文。(摘要可以比方為指紋,消息摘要算法就是要得到文件的唯一職位)

特點:

無論輸入的消息有多長,計算出來的消息摘要的長度總是固定的。
一般地,只要輸入的消息不同,對其進行摘要以后產生的摘要消息也必不相同;但相同的輸入必會產生相同的輸出。
只能進行正向的信息摘要,而無法從摘要中恢復出任何的消息,甚至根本就找不到任何與原信息相關的信息(不可逆性)。
好的摘要算法,沒有人能從中找到“碰撞”或者說極度難找到,雖然“碰撞”是肯定存在的(碰撞即不同的內容產生相同的摘要)。

應用:

一般地,把對一個信息的摘要稱為該消息的指紋或數字簽名。數字簽名是保證信息的完整性和不可否認性的方法。數據的完整性是指信宿接收到的消息一定是信源發送的信息,而中間絕無任何更改;信息的不可否認性是指信源不能否認曾經發送過的信息。其實,通過數字簽名還能實現對信源的身份識別(認證),即確定“信源”是否是信宿意定的通信伙伴。 數字簽名應該具有唯一性,即不同的消息的簽名是不一樣的;同時還應具有不可偽造性,即不可能找到另一個消息,使其簽名與已有的消息的簽名一樣;還應具有不可逆性,即無法根據簽名還原被簽名的消息的任何信息。這些特征恰恰都是消息摘要算法的特征,所以消息摘要算法適合作為數字簽名算法。

有哪些具體的消息摘要算法?

MessageDigest的選擇好多,包括MD2、MD4、MD5、SHA-1、SHA-256、RIPEMD128、RIPEMD160等。
 

CRC8、CRC16、CRC32

CRC(Cyclic Redundancy Check,循環冗余校驗)算法出現時間較長,應用也十分廣泛,尤其是通訊領域,現在應用最多的就是 CRC32 算法,它產生一個4字節(32位)的校驗值,一般是以8位十六進制數,如FA 12 CD 45等。CRC算法的優點在於簡便、速度快,嚴格的來說,CRC更應該被稱為數據校驗算法,但其功能與數據摘要算法類似,因此也作為測試的可選算法。
  在 WinRAR、WinZIP 等軟件中,也是以 CRC32 作為文件校驗算法的。一般常見的簡單文件校驗(Simple File Verify – SFV)也是以 CRC32算法為基礎,它通過生成一個后綴名為.SFV 的文本文件,這樣可以任何時候可以將文件內容 CRC32運算的結果與 .SFV 文件中的值對比來確定此文件的完整性。與 SFV 相關工具軟件有很多,如MagicSFV、MooSFV等。

MD2 、MD4、MD5

  這是應用非常廣泛的一個算法家族,尤其是 MD5(Message-Digest Algorithm 5,消息摘要算法版本5),它由MD2、MD3、MD4發展而來,由Ron Rivest(RSA公司)在1992年提出,目前被廣泛應用於數據完整性校驗、數據(消息)摘要、數據加密等。MD2、MD4、MD5 都產生16字節(128位)的校驗值,一般用32位十六進制數表示。MD2的算法較慢但相對安全,MD4速度很快,但安全性下降,MD5比MD4更安全、速度更快。
  目前在互聯網上進行大文件傳輸時,都要得用MD5算法產生一個與文件匹配的、存儲MD5值的文本文件(后綴名為 .md5或.md5sum),這樣接收者在接收到文件后,就可以利用與 SFV 類似的方法來檢查文件完整性,目前絕大多數大型軟件公司或開源組織都是以這種方式來校驗數據完整性,而且部分操作系統也使用此算法來對用戶密碼進行加密,另外,它也是目前計算機犯罪中數據取證的最常用算法。與MD5 相關的工具有很多,如 WinMD5等。

SHA1、SHA256、SHA384、SHA512

  SHA(Secure Hash Algorithm)是由美國專門制定密碼算法的標准機構——美國國家標准技術研究院(NIST)制定的,SHA系列算法的摘要長度分別為:SHA為20字節(160位)、SHA256為32字節(256位)、 SHA384為48字節(384位)、SHA512為64字節(512位),由於它產生的數據摘要的長度更長,因此更難以發生碰撞,因此也更為安全,它是未來數據摘要算法的發展方向。由於SHA系列算法的數據摘要長度較長,因此其運算速度與MD5相比,也相對較慢。
  目前SHA1的應用較為廣泛,主要應用於CA和數字證書中,另外在目前互聯網中流行的BT軟件中,也是使用SHA1來進行文件校驗的。

RIPEMD、PANAMA、TIGER、ADLER32 等

  RIPEMD是Hans Dobbertin等3人在對MD4,MD5缺陷分析基礎上,於1996年提出來的,有4個標准128、160、256和320,其對應輸出長度分別為16字節、20字節、32字節和40字節。TIGER由Ross在1995年提出。Tiger號稱是最快的Hash算法,專門為64位機器做了優化。
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM