摘要演算法
⑴ 摘要演算法的介紹
數據摘要演算法是密碼學演算法中非常重要的一個分支,它通過對所有數據提取指紋信息以實現數據簽名、數據完整性校驗等功能,由於其不可逆性,有時候會被用做敏感信息的加密。數據摘要演算法也被稱為哈希(Hash)演算法、散列演算法。
⑵ 摘要演算法如何在SSL中防止數據被篡改
實際應用中特別在一些安全性要求高的通信場景中往往要保證數據不被篡改.但對於一些信息量大,信息數量多的消息直接進行加密解密過程會嚴重消耗性能.因此提出消息摘要演算法,對消息的摘要進行加解密的性能損耗遠小於對消息整體進行加密,並且消息摘要也可以檢測消息是否被篡改.目前著名的摘要演算法有SHA,MD5等.下文是在SSL通信中如何使用摘要演算法防止數據被篡改的簡單理解.
1,假設A有一量長消息需要發送給B,需要對消息進行摘要.首先摘要演算法會對消息整體進行特徵提取.這段特徵值就被稱為消息的摘要.
提取出來的特徵值要能確保消息在作任何一個位置被篡改,篡改多少都能反映出來,即消息被篡改了重新進行摘要操作總能得到與未篡改時不同的特徵值.相反地,不同的特徵值也意味著不同的消息體.但無須通過特徵值還原消息.即特徵值只能反映出消息被篡改了,無法反映出消息在何處被篡改,也無法通過特徵值還原丟失或者被刪除的消息.
2,A使用B的公鑰對計算出來摘要進行加密,並將摘要和消息(消息明文)一並發送給B.
假想A發送給B的消息被C截獲了,此時C對消息明文可見.但C不能解碼出摘要內容(A使用B的公鑰發送的摘要只有B的私鑰可以解密,而B的私鑰只有B才持有).設想此時C對消息修改後重新做摘要,並使用B的公鑰進行加密,再發送給B.此時B端解密出來的摘要已經被篡改,因此C的修改在B端通過了摘要驗證.這樣雖然對消息進行摘要但仍然還是無法保證數據不被篡改.為了解決這個問題.要求A端不能只使用明文進行特徵提取,A端可以使用一些私密信息(只有A和B知曉的消息,C並不知情)與消息明文一起混合提取特徵.這樣雖然C可以獲取明文,但對秘密信息並不知情,C嘗試重新生成摘要時由於缺失私密信息也無法生成被B成功驗證的摘要.這樣使用摘要演算法就防止了第三方對數據的篡改.
⑶ 解決中間人攻擊的主要辦法是什麼呢 用des演算法可以嗎報文摘要演算法呢ca認證有用嗎
勿沖動;三思而後行。
⑷ 用java程序實現消息摘要演算法,並生成一個數的消息摘要
import java.security.MessageDigest;
String myinfo="我的測試信息";
MessageDigest alg = MessageDigest.getInstance("MD5");
alga.update(myinfo.getBytes());
byte[] bytes = alga.digest();
⑸ 描述數字簽名和消息摘要演算法的異同
身份認證就是,像用戶名密碼、動態口令、USB Key認證等輸入等一致。
數字簽名技術是將摘要信息用發送者的私鑰加密,與原文一起傳送給接收者。接收者只有用發送的公鑰才能解密被加密的摘要信息,然後用HASH函數對收到的原文產生一個摘要信息,與解密的摘要信息對比。如果相同,則說明收到的信息是完整的,在傳輸過程中沒有被修改,否則說明信息被修改過,因此數字簽名能夠驗證信息的完整性。
就是一個是用戶自身確認真偽,一個是信息加密確定真偽
⑹ 摘要演算法的特點是什麼
「消息摘要」(Message Digest)是一種能產生特殊輸出格式的演算法,這種加密演算法的特點是無論用戶輸入什麼長度的原始數據,經過計算後輸出的密文都是固定長度的,這種演算法的原理是根據一定的運算規則對原數據進行某種形式的提取,這種提取就是「摘要」,被「摘要」的數據內容與原數據有密切聯系,只要原數據稍有改變,輸出的「摘要」便完全不同,因此基於這種原理的演算法便能對數據完整性提供較為健全的保障。但是,由於輸出的密文是提取原數據經過處理的定長值,所以它已經不能還原為原數據,即消息摘要演算法是「不可逆」的,理論上無法通過反向運算取得原數據內容,因此它通常只能被用來做數據完整性驗證,而不能作為原數據內容的加密方案使用,否則誰也無法還原。
⑺ 摘要演算法的特點是什麼
你想用什麼演算法都行,比如md5,sha1等,舉個例子:
byte[]
digest
=
messagedigest.getinstance("md5").digest("這是很長很長的一大段文字。。。".getbytes("utf-8"));
這是很長很長的一大段文字,變成了32位元組,就算實現了摘要
⑻ 報文摘要演算法特性中哪兩點最重要
hard to reverse
collison free
otherwise, the cryptosystem would be insure