java中的数据加密1 消息摘要
生活随笔
收集整理的這篇文章主要介紹了
java中的数据加密1 消息摘要
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
消息摘要(Message Digest)
又稱為數字摘要(Digital Digest)。它是一個唯一對應一個消息或文本的固定長度的值,它由一個單向Hash加密函數對消息進行作用而產生。如果消息在途中改變了,則接收者通過對收到消息的新產生的摘要與原摘要比較,就可知道消息是否被改變了。因此消息摘要保證了消息的完整性。 消息摘要采用單向Hash 函數將需加密的明文"摘要"成一串128bit的密文,這一串密文亦稱為數字指紋(Finger Print),它有固定的長度,且不同的明文摘要成密文,其結果總是不同的,而同樣的明文其摘要必定一致。這樣這串摘要便可成為驗證明文是否是"真身"的"指紋"了。
HASH函數的抗沖突性使得如果一段明文稍有變化,哪怕只更改該段落的一個字母,通過哈希算法作用后都將產生不同的值。而HASH算法的單向性使得要找到哈希值相同的兩個不同的輸入消息,在計算上是不可能的。所以數據的哈希值,即消息摘要,可以檢驗數據的完整性。
哈希函數的這種對不同的輸入能夠生成不同的值的特性使得無法找到兩個具有相同哈希值的輸入。因此,如果兩個文檔經哈希轉換后成為相同的值,就可以肯定它們是同一文檔。所以,當希望有效地比較兩個數據塊時,就可以比較它們的哈希值。例如,可以通過比較郵件發送前和發送后的哈希值來驗證該郵件在傳遞時是否修改。
import java.security.MessageDigest;public class MessageDigestTest {public static void main(String[] args) throws Exception {byte[] srcText = "hellokitty test MessageDigest".getBytes("UTF8");// 使用getInstance("算法")來獲得消息摘要,這里使用SHA-1的160位算法MessageDigest messageDigest = MessageDigest.getInstance("SHA-1");System.out.println(" " + messageDigest.getProvider().getInfo());// 開始使用算法 messageDigest.update(srcText);System.out.println(" Digest:");// 輸出算法運算結果System.out.println(new String(messageDigest.digest(), "UTF8"));// 同樣的文本,輸出同樣的結果 messageDigest.update(srcText);System.out.println(new String(messageDigest.digest(), "UTF-8"));} }?
總結
以上是生活随笔為你收集整理的java中的数据加密1 消息摘要的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ResourceLoader
- 下一篇: as3+java+mysql(mybat