【Java小工匠】消息摘要--概述

1、消息摘要概述

??數(shù)據(jù)摘要算法是密碼學(xué)算法中非常重要的一個分支,它通過對所有數(shù)據(jù)提取指紋信息以實(shí)現(xiàn)數(shù)據(jù)簽名、數(shù)據(jù)完整性校驗(yàn)等功能,由于其不可逆性,有時候會被用做敏感信息的加密。

2、消息摘要算法特點(diǎn)

2.1 變成輸入、定長輸出

無論輸入的消息有多長,計(jì)算出來的消息摘要的長度總是固定的。例如應(yīng)用MD5算法摘要的消息有128個比特位,用SHA-1算法摘要的消息最終有160比特位的輸出。

2.2 輸入不同、摘要不同,輸入相同、摘要相同

只要輸入的消息不同,對其進(jìn)行摘要以后產(chǎn)生的摘要消息也必不相同;但相同的輸入必會產(chǎn)生相同的輸出。這正是好的消息摘要算法所具有的性質(zhì):輸入改變了,輸出也就改變了;兩條相似的消息的摘要確不相近,甚至?xí)笙鄰酵?。從理論上來說,不管使用什么樣的摘要算法,必然存在2個不同的消息,對應(yīng)同樣的摘要。因?yàn)檩斎胧且粋€無窮集合,而輸出是一個有限集合,所以從數(shù)學(xué)上來說,必然存在多對一的關(guān)系。但是實(shí)際上,很難或者說根本不可能人為的造出具有同樣摘要的2個不同消息。

2.3 單向、不可逆、散列值不同、原始值不同

消息摘要是單向、不可逆的。只能進(jìn)行正向的信息摘要,而無法從摘要中恢復(fù)出任何的原始消息,甚至根本就找不到任何與原信息相關(guān)的信息。當(dāng)然,可以采用強(qiáng)力攻擊的方法,即嘗試每一個可能的信息,計(jì)算其摘要,看看是否與已有的摘要相同,如果這樣做,最終肯定會恢復(fù)出摘要的消息。但實(shí)際上,要得到的信息可能是無窮個消息之一,所以這種強(qiáng)力攻擊幾乎是無效的。

2.4 “碰撞” 難找到

好的摘要算法,沒有人能從中找到“碰撞”,雖然“碰撞”是肯定存在的。即無法找到兩條不同消息,但是它們的摘要相同。

3、消息摘要的分類

(1)MD(Message Digest) 消息摘要算法
(2)SHA(Secure Hash Algorithm) 安全散列算法
(3)MAC(Message Authentication Code) 消息認(rèn)證碼算法

4、消息摘要用途

4.1、檢查軟件與數(shù)據(jù)是否被篡改

檢查我們下載的軟件是否被篡改過。很多軟件,都會將軟件通過單向散列值函數(shù)計(jì)算,將散列值公布自己在官網(wǎng)上。網(wǎng)盤4G文件秒傳也是應(yīng)用的次特性。

4.2、基于口令的加密

單向散列函數(shù)也被用于基于口令加密(Password Base Encryption PBE)
PBE的原理是將口令和鹽(salt,通過隨機(jī)數(shù)生成器生成)混合后計(jì)算其散列值。防御口令字典的攻擊。

4.3、消息認(rèn)證碼

消息認(rèn)證碼是將“發(fā)送者和接收者直接的共享的密鑰”和“消息” 進(jìn)行混合后計(jì)算出散列值。使用消息認(rèn)證碼可以防止消息的錯誤、篡改、偽裝。

4.4、數(shù)據(jù)簽名

數(shù)據(jù)簽名非常耗時,一般會對消息先進(jìn)行摘要處理,處理后直接對象消息摘要信息進(jìn)行述職簽名。

4.5、偽隨機(jī)數(shù)

密碼技術(shù)中,所使用的隨機(jī)數(shù)需要“不能根據(jù)過去的隨機(jī)數(shù)數(shù)列,預(yù)測未來的隨機(jī)數(shù)數(shù)列”這樣的性質(zhì),可以利用單向哈希函數(shù)的性質(zhì)。

4.6、一次性口令

使用單向哈希函數(shù),可以構(gòu)造一次性口令。一次性口令常被用于服務(wù)器和客戶端的合法認(rèn)證,在這種方式中,通過單向散列函數(shù)可以保證,口令只在通訊鏈路上傳遞一次,因此即使竊聽者獲取,也無法使用。

5. 散列算法破解

(1) 算法破解
已知數(shù)據(jù)A和消息的散列值,找到另外一個數(shù)據(jù)B和A的散列值相同。例如2005年2月,王小云破解SHA-1 算法。


算法破解

(2) 假破解
根據(jù)數(shù)據(jù)庫查詢散列值,查詢數(shù)據(jù)對應(yīng)的明文。數(shù)據(jù)樹數(shù)據(jù)越多破解的概率越大,例如密碼使用md5加密,因?yàn)槊艽a長度一般都是1-8位的,所以數(shù)據(jù)庫可以窮舉這些值,提供逆向查詢。


如果讀完覺得有收獲的話,歡迎點(diǎn)贊、關(guān)注、加公眾號【小工匠技術(shù)圈】

個人公眾號,歡迎關(guān)注,查閱更多精彩歷史!

image
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 這篇文章主要講述在Mobile BI(移動商務(wù)智能)開發(fā)過程中,在網(wǎng)絡(luò)通信、數(shù)據(jù)存儲、登錄驗(yàn)證這幾個方面涉及的加密...
    雨_樹閱讀 3,046評論 0 6
  • 1、MD算法的基的概念 ? ?MD5算法是典型的消息摘要算法,其前身有MD2、MD3和MD4算法,它由MD4、MD...
    Java小工匠閱讀 1,070評論 0 1
  • 在深入學(xué)習(xí)區(qū)塊鏈時,不可避免的需要了解密碼學(xué)。區(qū)塊鏈算是對密碼學(xué)的一次整合運(yùn)用,雖然并無太多創(chuàng)新的密碼算法,但也值...
    Kerwong閱讀 44,786評論 4 25
  • Hi,歡迎來到超級個體,為個體崛起的時代做好準(zhǔn)備。 “我們已經(jīng)有了關(guān)于商業(yè)、趨勢、政治和財(cái)富的內(nèi)容,為什么我們不做...
    花落人佇立閱讀 531評論 0 0
  • 當(dāng)家里爺爺奶奶過世之后,家這個概念也就變成“老家”了,以前定期回去,而現(xiàn)在則變成了偶爾回去了,自己也像是個來去...
    彈指一揮閱讀 283評論 0 0

友情鏈接更多精彩內(nèi)容