使用Java實現信息摘要算法

1. 介紹

在實際開發中,我們會經常用到一些不可逆的加密算法,例如:MD5算法、SHA1算法、信息摘要算法,還有哈希算法等等。如果沒有好好學習一些,真得會搞混的。所以我查找了相關資料,在這裏簡單介紹一下。

消息摘要算法分爲三類:

  • MD(Message Digest):消息摘要
  • SHA(Secure Hash Algorithm):安全散列
  • HMAC(Hash-based Message Authentication Code):散列消息認證碼

這三類算法的主要作用:數據加密和驗證數據的完整性。

這裏提供一個在線工具:http://tool.oschina.net/encrypt?type=2

2. MD

生成的消息摘要都是128位的,包括:MD2、MD4、MD5。從安全性上來說,MD5 > MD4 > MD2。

3. SHA

安全散列算法(英語:Secure Hash Algorithm,縮寫爲SHA,也有稱爲哈希算法)是一個密碼散列函數家族,是FIPS所認證的安全散列算法。能計算出一個數字消息所對應到的,長度固定的字符串(又稱消息摘要)的算法。且若輸入的消息不同,它們對應到不同字符串的機率很高。包括:SHA-1、SHA-2(SHA-224、SHA-256、SHA-384、SHA-512)。

4. HMAC

密鑰散列消息認證碼(英語:Keyed-hash message authentication code),又稱散列消息認證碼(Hash-based message authentication code,縮寫爲HMAC),是一種通過特別計算方式之後產生的消息認證碼(MAC),使用密碼散列函數,同時結合一個加密密鑰。包括:HmacMD2、HmacMD4、HmacMD5、HmacSHA1、HmacSHA224、HmacSHA256、HmacSHA384、HmacSHA512。

5. 總結

這裏只是簡單介紹一下這三類算法的基本內容,對於算法的具體實現沒有涉及到,如果想了解具體實現的朋友,那隻能另外找資料了。我自己封裝了一個工具類,感興趣的可以到我的GitHub上面看看 CryptoHelper,具體使用方式請看這個BlogDemo

這裏提供一個在線工具:http://tool.oschina.net/encrypt?type=2,方便大家驗證。不過這裏說明一下,不知道什麼原因,我封裝的工具類中的HmacSHA224和HmacSHA384這兩個算法的加密結果跟這個在線工具不一樣。我初步估計可能是JDK的內部實現問題。

 

如果想進一步交流和學習的同學,可以加一下QQ羣哦!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章