java中的数据加密1 消息摘要
消息摘要(Message Digest)
又稱為數(shù)字摘要(Digital Digest)。它是一個唯一對應(yīng)一個消息或文本的固定長度的值,它由一個單向Hash加密函數(shù)對消息進(jìn)行作用而產(chǎn)生。如果消息在途中改變了,則接收者通過對收到消息的新產(chǎn)生的摘要與原摘要比較,就可知道消息是否被改變了。因此消息摘要保證了消息的完整性。 消息摘要采用單向Hash 函數(shù)將需加密的明文"摘要"成一串128bit的密文,這一串密文亦稱為數(shù)字指紋(Finger Print),它有固定的長度,且不同的明文摘要成密文,其結(jié)果總是不同的,而同樣的明文其摘要必定一致。這樣這串摘要便可成為驗(yàn)證明文是否是"真身"的"指紋"了。
HASH函數(shù)的抗沖突性使得如果一段明文稍有變化,哪怕只更改該段落的一個字母,通過哈希算法作用后都將產(chǎn)生不同的值。而HASH算法的單向性使得要找到哈希值相同的兩個不同的輸入消息,在計(jì)算上是不可能的。所以數(shù)據(jù)的哈希值,即消息摘要,可以檢驗(yàn)數(shù)據(jù)的完整性。
哈希函數(shù)的這種對不同的輸入能夠生成不同的值的特性使得無法找到兩個具有相同哈希值的輸入。因此,如果兩個文檔經(jīng)哈希轉(zhuǎn)換后成為相同的值,就可以肯定它們是同一文檔。所以,當(dāng)希望有效地比較兩個數(shù)據(jù)塊時,就可以比較它們的哈希值。例如,可以通過比較郵件發(fā)送前和發(fā)送后的哈希值來驗(yàn)證該郵件在傳遞時是否修改。
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:");// 輸出算法運(yùn)算結(jié)果System.out.println(new String(messageDigest.digest(), "UTF8"));// 同樣的文本,輸出同樣的結(jié)果 messageDigest.update(srcText);System.out.println(new String(messageDigest.digest(), "UTF-8"));} }?
總結(jié)
以上是生活随笔為你收集整理的java中的数据加密1 消息摘要的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ResourceLoader
- 下一篇: LVS简介