在軟件開發,前後臺數據傳送經常使用信息摘要這類算法進行數據的加密。
MessageDigest 類 簡介
MessageDigest類 位於 java.security.MessageDigest,提供引用程序一個信息摘要算法的功能,比如 SHA-1 或者 MD5 等等。 信息摘要算法是一種安全的單向hash方程式,可以將可變長度的數據轉換成固定長度的hash code。
MessageDigest類的使用:
//簡單的MessageDigest使用
MessageDigest md = MessageDigest.getInstance("SHA");
//使用特定的字節數據更新digest
md.update(byte[]);
//獲取hsah code 二進制數組 ,此操作後digest將會被reset
md.digest();
信息摘要算法簡介
數據摘要算法是密碼學算法中非常重要的一個分支,它通過對所有數據提取指紋信息以實現數據簽名、數據完整性校驗等功能,由於其不可逆性,有時候會被用做敏感信息的加密。數據摘要算法也被稱爲哈希(Hash)算法、散列算法。·詳情
特點
消息摘要算法的主要特徵是,在單項的加密過程中一般不需要密鑰,加密出來的密文無法反向解密 ,只有相同的消息經過相同的消息摘要算法能生成相同的密文。
應用
一般地,把對一個信息的摘要稱爲該消息的指紋或數字簽名,信息摘要算法的主要用途是信息完整性校驗,就好比我們買菜,肯定都希望稱一下買的菜分量是否足夠。
在計算機領域,我們也希望能知道別人傳遞的消息是否完整是否被篡改了,這裏就用到信息摘要算法。
消息摘要算法常常用來保證傳輸消息的完整性和驗證傳輸的消息是否被篡改。也就是通常所說的驗籤。
舉個栗子:C/S下,客戶端與服務器通信過程中常常伴有驗籤操作。通常發送password和account到服務器的過程是將password加密後 和account與其它提交參數形成提交參數String 然後拼接某些密鑰或key值,再經過消息摘要算法形成 SignMsg 簽名 一同提交給服務器,服務器首先會驗證SignMsg的正確性。
分類
此類算法源於 CRC算法 (奇偶校驗碼、循環冗餘算法),用於檢測信息的完整性。在CRC的基礎上產生了MD和SHA摘要算法家族,此後有產生了MAC帶密鑰的信息摘要算法。
- MD5算法: Message Digest Algorithm.目前主流算法,爲第五版,之前爲MD2,MD3,MD4
- SHA算法: Secure Hash Algorithm. 主要應用於數字簽名標準(Digital Signature Standard)DSS下的數字簽名算法(Digital Signature Algorithm)DSA。
- MAC算法: 帶有密碼信息的信息摘要算法,目前有HmacMD2,HmacMD5,HmacSHA-256。