日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

为什么应该放弃或减少使用MD5

發(fā)布時(shí)間:2025/3/20 编程问答 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 为什么应该放弃或减少使用MD5 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

http://www.williamlong.info/archives/3229.html 

MD5即Message-Digest Algorithm 5(信息-摘要算法 5),是網(wǎng)絡(luò)上廣泛使用的散列(Hash)算法之一,可以實(shí)現(xiàn)將任意長(zhǎng)度的數(shù)值映射為固定長(zhǎng)度的較小數(shù)值。

  MD5是一種常用的單向Hash算法。它被廣泛用于以下幾個(gè)用途:

  1、檢查數(shù)據(jù)是否一致。將兩地存儲(chǔ)的數(shù)據(jù)進(jìn)行哈希,比較結(jié)果,如果結(jié)果一致就無(wú)需再進(jìn)行數(shù)據(jù)比對(duì)。這是利用了其“抵抗沖突”(collision- resistant)的能力,兩個(gè)不同的數(shù)據(jù),其哈希值只有很小的幾率一致。相當(dāng)多數(shù)據(jù)服務(wù),尤其是網(wǎng)盤(pán)服務(wù),利用類(lèi)似的做法來(lái)檢測(cè)重復(fù)數(shù)據(jù),避免重復(fù)上傳。

  2、存儲(chǔ)用戶(hù)密碼。將密碼哈希后的結(jié)果存儲(chǔ)在數(shù)據(jù)庫(kù)中,以做密碼匹配。這是利用了其做為單向哈希的特點(diǎn),從計(jì)算后的哈希值不能得到密碼。

  3、校驗(yàn)數(shù)據(jù)正確性。將數(shù)據(jù)和數(shù)據(jù)哈希后的結(jié)果一并傳輸,用于檢驗(yàn)傳輸過(guò)程中數(shù)據(jù)是否有損壞。這是利用了很難找到兩個(gè)不同的數(shù)據(jù),其哈希結(jié)果一致的特點(diǎn)。

  下面我們將說(shuō)明為什么對(duì)于上面三種用途, MD5都不適用。

  第一個(gè)用途尤其可怕。這個(gè)用途的最大的問(wèn)題是,MD5在現(xiàn)實(shí)中已經(jīng)被發(fā)現(xiàn)有相當(dāng)多的數(shù)據(jù)都可能導(dǎo)致沖突。舉例而言,如下兩段數(shù)據(jù)的MD5哈希值就是完全一樣的。

??? 數(shù)據(jù) 1?

??? 4d c9 68 ff 0e e3 5c 20 95 72 d4 77 7b 72 15 87
??? d3 6f a7 b2 1b dc 56 b7 4a 3d c0 78 3e 7b 95 18
??? af bf a2?00?a8 28 4b f3 6e 8e 4b 55 b3 5f 42 75
??? 93 d8 49 67 6d a0 d1?55?5d 83 60 fb 5f 07 fe a2

??? 數(shù)據(jù) 2

??? 4d c9 68 ff 0e e3 5c 20 95 72 d4 77 7b 72 15 87
??? d3 6f a7 b2 1b dc 56 b7 4a 3d c0 78 3e 7b 95 18
??? af bf a2?02?a8 28 4b f3 6e 8e 4b 55 b3 5f 42 75
??? 93 d8 49 67 6d a0 d1?d5?5d 83 60 fb 5f 07 fe a2

??? 輸出相同的MD5 哈希

??? 008ee33a9d58b51cfeb425b0959121c9

  這意味著,如果用戶(hù)提供數(shù)據(jù) 1,服務(wù)器已經(jīng)存儲(chǔ)數(shù)據(jù) 2。通過(guò)簡(jiǎn)單的MD5哈希方式檢查重復(fù),服務(wù)器上為用戶(hù)保存的數(shù)據(jù)就是2。 接下來(lái)發(fā)生的事情大家都知道了,就是用戶(hù)數(shù)據(jù)丟了!

  第二個(gè)用途很容易遭到rainbow table攻擊,和明文存儲(chǔ)密碼的實(shí)質(zhì)區(qū)別不大。更詳細(xì)的分析可以察看這篇文章。

  第三個(gè)用途里一般會(huì)在需要哈希的數(shù)據(jù)中混入某些秘密,也就是計(jì)算公式為md5(secret key + data)。 但這樣并不適合用于驗(yàn)證數(shù)據(jù)的完整性。這是因?yàn)?#xff0c;從理論上上來(lái)說(shuō),如果知道m(xù)d5(secret key +X),即使不知道secret key的內(nèi)容, 仍然可能通過(guò)對(duì)X的分析,計(jì)算得到md5(secret key +Y),從而將X成功的替換成Y,導(dǎo)致接收方仍然認(rèn)為數(shù)據(jù)是正確的。

  來(lái)源:堅(jiān)果云投稿,堅(jiān)果云是一款類(lèi)似Dropbox的云存儲(chǔ)服務(wù)。


總結(jié)

以上是生活随笔為你收集整理的为什么应该放弃或减少使用MD5的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。