消息摘要(Message Digest)

常見(jiàn)算法

MD5、SHA、CRC 等

使用場(chǎng)景

  1. 對(duì)用戶密碼進(jìn)行md5 加密后保存到數(shù)據(jù)庫(kù)里
  2. 軟件下載站使用消息摘要計(jì)算文件指紋,防止被篡改
  3. 數(shù)字簽名

例如軟件下載站數(shù)據(jù)指紋:
http://dev.mysql.com/downloads/installer/

Paste_Image.png

使用步驟

1. //常用算法:MD5、SHA、CRC
2. MessageDigest digest = MessageDigest.getInstance("MD5");
3. byte[] result = digest.digest(content.getBytes());
4. //消息摘要的結(jié)果一般都是轉(zhuǎn)換成16 進(jìn)制字符串形式展示
5. String hex = Hex.encode(result);
6. //MD5 結(jié)果為16 字節(jié)(128 個(gè)比特位)、轉(zhuǎn)換為16 進(jìn)制表示后長(zhǎng)度是32 個(gè)字符
7. //SHA 結(jié)果為20 字節(jié)(160 個(gè)比特位)、轉(zhuǎn)換為16 進(jìn)制表示后長(zhǎng)度是40 個(gè)字符
8. System.out.println(hex);

消息摘要后的結(jié)果是固定長(zhǎng)度,無(wú)論你的數(shù)據(jù)有多大,哪怕是只有一個(gè)字節(jié)或者是一個(gè)G 的文件,摘要
后的結(jié)果都是固定長(zhǎng)度。
經(jīng)常聽(tīng)到有人問(wèn)這樣的問(wèn)題,MD5 摘要后結(jié)果到底是多少位?有的人說(shuō)是16 位,有的說(shuō)是128 位,有
的說(shuō)是32 位。到底是多長(zhǎng),這個(gè)時(shí)候我們就要明白,16 位指的是字節(jié)位數(shù),128 位指的是比特位,32 位
指的結(jié)果轉(zhuǎn)換成16 進(jìn)制展示的字符位數(shù)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容