怎么驗證md5值_如何驗證md5值 方法如下
2022-11-30 09:05:24 來源:互聯(lián)網(wǎng)
(資料圖)
在上數(shù)字簽名這道密碼學(xué)的主菜前,今天先品嘗一下數(shù)字摘要這道重要的前菜,因為數(shù)字摘要是數(shù)字簽名的組成部分。數(shù)字摘要,英文叫Hash,所以它也被叫做哈希、熵等名字。它是一種算法,可以將任意長度的原數(shù)據(jù)運算變換成一個固定長度的結(jié)果數(shù)據(jù),這個結(jié)果數(shù)據(jù)有兩個特點:一是相對于原數(shù)據(jù),其長度比較短,比如有16字節(jié)、20字節(jié)、32字節(jié)等等;二是它可以體現(xiàn)原數(shù)據(jù)的特征,也就是說原數(shù)據(jù)如果發(fā)生變化,計算出來的結(jié)果數(shù)據(jù)也會變化(注意,這里其實有一個大坑,后面會談到)。
原數(shù)據(jù)修改,摘要值變化
這兩個特點,就類似于我們寫文章時經(jīng)常用到的摘要(很短,但又能體現(xiàn)文章大體內(nèi)容),這也就是數(shù)字摘要的名稱的由來,相應(yīng)的,這個結(jié)果數(shù)據(jù)就叫摘要值、哈希值或熵值(熵也是取其在物理學(xué)上表示度量之意)。
前面講過,非對稱加密的一個特點就是慢。所以在使用非對稱加密算法的時候,一般不對原數(shù)據(jù)進行直接加密。后面講到的數(shù)字簽名,實質(zhì)上也是非對稱加密運算,就采取了原文的摘要,而不是原文進行加密。這樣無論原數(shù)據(jù)有多大,被加密的數(shù)據(jù)只有幾十個字節(jié),保證了整體運算速度。雖然說數(shù)字摘要總是和數(shù)字簽名在一起,但我想很多程序員都接觸過數(shù)字摘要,拿它來做單向加密。所謂單向加密,就是指加密結(jié)果沒辦法再解密回明文(對稱加密、非對稱加密都屬于雙向加密)。單向加密主要是用做驗證,最常見的一個應(yīng)用場景就是用戶口令的單向加密。數(shù)據(jù)庫中存儲了用戶口令的摘要值,用戶登錄系統(tǒng)時,系統(tǒng)計算其口令明文的摘要值,然后送到后臺對比。這樣系統(tǒng)中傳輸、對比、儲存的都是用戶口令的摘要值,而不是口令明文,加強了口令的安全性。數(shù)字摘要的另一個常用領(lǐng)域就是檢查程序的完整性,一個程序運行前,可以計算一下它的摘要值,再與其自帶摘要值對比,以確定程序有沒有被篡改過。
常用的數(shù)字摘要算法(后面是其摘要值長度)有MD5(16字節(jié))、SHA1(20字節(jié))、SHA256(32字節(jié)),國產(chǎn)算法的有SM3(32字節(jié))。
最后照例談一下安全問題。2004年有一個報道說山東大學(xué)的王小云教授破解了MD5算法,對于一向不為公眾所知的密碼領(lǐng)域,這條新聞算是很有轟動效應(yīng)了。當時很多非專業(yè)領(lǐng)域的媒體也紛紛跟進,"MD5已經(jīng)坍塌"、"密碼學(xué)的基礎(chǔ)已經(jīng)動搖"這些新聞標題很是帶了一波流量。因為使用MD5做單向加密的系統(tǒng)不在少數(shù),所以當時也有很多公司、程序員開始忐忑不安了。
其實,這些都是非專業(yè)的觀點。前面講過了,數(shù)字摘要指是有固定長度的,也就是說,每一種摘要算法計算出的摘要值的個數(shù)是有限的,比如SHA256算法,它的摘要值個數(shù)是2的256次方,這個數(shù)量大到已經(jīng)不是天文數(shù)字了,而是在人類已知的宇宙里已經(jīng)沒有可以拿來說明這個數(shù)到底有多大的實例了。但是,它畢竟還是個數(shù)字,SHA256摘要的個數(shù)還是有限的,而原數(shù)據(jù)的數(shù)量是無限的。無限的原數(shù)據(jù)對應(yīng)有限的摘要值,想象一下小時候?qū)W的抽屜原則:三個蘋果放進兩個抽屜,至少有兩個蘋果在同一個抽屜里。所以,必然有多個原數(shù)據(jù)(而且還是無限多個),被放進了同一個抽屜,就是擁有相同的摘要值。這種不同原數(shù)據(jù),擁有相同數(shù)據(jù)摘要現(xiàn)象,叫做碰撞。說到這,肯定有同學(xué)會問這不顛覆了最開始說的原數(shù)據(jù)如果發(fā)生變化,數(shù)字摘要指也會變化的特征嗎?是這樣的,這也就是前面說的那個大坑。不管哪種算法,數(shù)字摘要必然存在碰撞。其實Hash這個單詞來源于拉丁文,本意就有碰撞的意思,那些發(fā)明它的數(shù)學(xué)家一開始就知道數(shù)字摘要的吊詭之處。那數(shù)字摘要的意義究竟在哪呢,它的意義在于有效碰撞存在的概率為零。所謂有效碰撞,是指發(fā)生碰撞的原數(shù)據(jù)有實際作用和意義。舉個例子,比如將"向12345這個賬戶轉(zhuǎn)10000元。"這條信息修改成"向54321這個賬戶轉(zhuǎn)10000元。",兩條信息如果計算出的摘要值是相同的,但這種碰撞就是有效碰撞,因為這種修改后的原數(shù)據(jù)是有意義的,篡改者達到了目的而不被發(fā)現(xiàn)出來??梢钥闯鰜?,由于攻擊者篡改數(shù)據(jù)總有的特定目的,不會只為了求碰撞而篡改,所以這種有效碰撞在實際應(yīng)用中可以說是不存在的,摘要算法還是安全的。王小云教授實際上是發(fā)明了一種比較快速找到MD5碰撞的算法,后來她又發(fā)明了SHA-1的碰撞算法,其意義在于發(fā)現(xiàn)現(xiàn)有算法漏洞,促進摘要算法不斷完善發(fā)展。好的摘要算法,就是要碰撞率發(fā)生足夠低。因此MD5算法不存在被破解的說法,我們也仍然不可能從摘要值反推出原文。在實際應(yīng)用中,我們還可以通過在數(shù)據(jù)加鹽(添加隨機數(shù))、多個摘要算法混用的方法進一步降低碰撞概率。
另外,一些宣稱可以破解摘要算法的網(wǎng)站(比如),其實是保存了一個原文與對應(yīng)摘要值的數(shù)據(jù)庫,所謂破解是查詢摘要值對應(yīng)的明文。你輸入的摘要值要是不在庫里,它就無能為力了。
關(guān)鍵詞:
相關(guān)閱讀
- 怎么驗證md5值_如何驗證md5值 方法如下
- 6本清穿類型的小說推薦_清穿文推薦 一...
- 美劇必看的10部電視劇_好看的歐美電視劇...
- 中國電信寬帶套餐價格表2021_如何收費的...
- 六一兒童節(jié)簡筆畫簡單又漂亮_六一兒童節(jié)...
- NBA名人堂之 風(fēng)之子 納什!_納什個人資料
- 勞動最光榮摘抄內(nèi)容 趕緊碼住-全球快訊
- 昨夜星辰昨夜風(fēng)_孔雀東飛何處棲 文章賞...
- 全網(wǎng)最低刷qq永久會員卡盟_QQ刷鉆是真的嗎?
- 世界兒童服裝品牌十大排名_兒童服飾品牌...
- 揭秘百年前通古斯大爆炸,究竟是什么原...
- 語文版《論語十則》原文與譯文 你都學(xué)...