古詩詞大全網 - 個性簽名 - 關於MD5加密算法密碼驗證問題

關於MD5加密算法密碼驗證問題

(恰恰我最近也在研究加密這塊,

我們公司項目的RSA ASE MD5 SHA-1加密方案都是我寫的。

直接拿我分享會上的稿子了)

先回答妳的問題:

妳的擔心是正確的,

MD5加密的結果值A,是可以由兩個不同的內容B和C得到的

即:期望的正確密碼 a a進行MD5加密的結果 ?0cc175b9c0f1b6a831c399e269772661

某人輸入了錯誤的密碼x,

x進行特殊的算法處理,是可以得到0cc175b9c0f1b6a831c399e269772661 這個MD5值的

————

但是妳註意壹點,錯誤的密碼數據,必須是通過復雜算法得到,簡單點稱作“碰撞算法”。碰撞算法,其實可以看作是壹種偽裝算法,即,把錯誤的東西偽裝成某個正確東西的MD5值。

至於“碰撞算法”的原理,可以從MD5加密的原理探知1、2,

MD5加密的過程有四步驟:

填充 2.初始化變量?3. 處理分組數據 4.輸出結果

“碰撞算法”原理就是在前三步進行“大數據量樣本的填充-試錯-填充試錯-直至得到期望的結果

破解過程中有三點是必須清晰的;

1.大量的正確密碼的樣本

2.采用碰撞算法

3.事先預知的,破解者期望的正確的結果

三者缺壹不可

MD5“碰撞算法”的示例場景也是在 文件(比如數字簽名)摘要加密上,

即,像密碼學家演示的那樣:

通過算法,可以得到相同MD5值的A和B ?(A和B只是代指),這種算法2004年已經由中國的密碼學家王小雲實現。

但是回到題主擔心的,

非法分子,事先並不知道 ?張無忌的賬號——正確密碼對應的MD5值,

他只能用“碰撞算法”去試,隨便編壹個假的密碼,用“碰撞算法”去進行偽裝填充-試錯

但是試的過程就是無數次跟貴公司後臺校驗的過程,

在這個過程,貴公司後臺應該做了用戶當日最大錯誤密碼次數處理。

所以理論上,不存在壹個人,輸入了錯誤的密碼,登錄成功的情況。

假設這個人每天能試5次,使用“碰撞算法”估計要算好幾輩子了。

——

但是強調壹下“MD5碰撞算法”的應用前提:

已知的明文以及明文對應的MD5值

根據1的條件,算法可以偽裝出 另壹個明文以及相同的MD5值

所以,不存在偶爾輸錯了壹個密碼,使用MD5加密,湊巧得到了正確密碼的MD5值,這種情況不滿足“碰撞算法”的條件和前提。

根本不可能。

安全性總結:

對於文件來說碰撞可能容易,但是對於限定長度的密碼或者密文來說,MD5作為壹種高性能高安全的數字簽名算法來說,還是非常實用的

——

綜上 MD5碰撞幾個關註點

多數情況下,會產生不可視字符,而密碼不可能存在不可視字符的.

生成"碰撞"的字符,能和妳密碼本身長度相等的.基本不可能.

基於上面兩點.只要稍作點文章.就可以防止MD5碰撞了.

1.密碼進行多次MD5加密

2.密碼過濾不過視字符.

3.密碼是定長的.例如:32個字符.用戶不夠的字符,用壹固定字符如:空格補充.超長的.壹律非法.

————

參考文章

1中國密碼學家王小雲2004年提交的破解MD5的算法

2碰撞算法原理分析

3產生MD5碰撞的新的充分條件集

4MD5碰撞