1. 程式人生 > >資料完整性驗證-MD5雜湊演算法的安全性

資料完整性驗證-MD5雜湊演算法的安全性

最近檔案完整性校驗由MD5變成了sha256, 對於選擇sha256這個hash演算法的原因從網上找了一些資料。一句話概括:sha256更加安全一些。

http://bobao.360.cn/learning/detail/564.html

MD5雜湊演算法使用比較廣泛,很多年前就一直傳著MD5不安全。

現實中,可供我們選擇的雜湊演算法有很多,具體選擇哪一種,主要考慮下列幾個方面:

*加速:演算法在讀取整個檔案後,會對其內容進行某些數學運算,從而得到一個雜湊值。如果演算法的計算開銷非常之大的話,那麼整個過程的速度就會受到拖累。

*生成的雜湊值的簡短程度:生成的雜湊值越短,越能節約其所佔資料庫的空間。

*安全性:通常用2個檔案具有相同的雜湊值(稱為碰撞)的概率來衡量雜湊演算法的安全效能,當然,這個值越大越糟,因此它應該儘可能接近零

http://www.jiamisoft.com/blog/21631-sha2.html

Hash函式的安全性很大程度上取決於抗強碰撞的能力。目前已有的對Hash函式攻擊的方法包括生日攻擊、彩虹表攻擊、差分攻擊等。Hash函式的演算法結構特點和Hash值的長度是決定函式碰撞性的而主要因素,Hash值越長,抵禦越強。SHA-256有256位元Hash值,MD5和SHA-1分別有128和160位元的Hash值。

對於完整性校驗,還有一種更加安全的辦法。 即 sha256 + RSA: 對內容進行hash獲取hash串後,再用金鑰對中的私鑰對hash串進行加密(簽名)。 使用者獲取到檔案後,用公鑰對hash串解密,再與重新計算得到的hash串進行比較,判斷檔案是否被篡改過。(這個過程花費的時間肯定更長)