MD5(單向雜湊演算法)的全稱是Message-Digest Algorithm 5(資訊-摘要演算法),經MD2、MD3和MD4發展而來。MD5演算法的使用不需要支付任何版權費用。
MD5功能:
- 輸入任意長度的資訊,經過處理,輸出為128位的資訊(數字指紋);
- 不同的輸入得到的不同的結果(唯一性);
- 根據128位的輸出結果不可能反推出輸入的資訊(不可逆);
一、Md5演算法應用
MD5加密演算法由於其具有較好的安全性,加之商業也可以免費使用該演算法,因此該加密演算法被廣泛使用,md5演算法主要運用在數字簽名、檔案完整性驗證以及口令加密等方面。
用途: 1、防止被篡改:
1)比如傳送一個電子文件,傳送前,我先得到MD5的輸出結果a。然後在對方收到電子文件後,對方也得到一個MD5的輸出結果b。如果a與b一樣就代表中途未被篡改。2)比如我提供檔案下載,為了防止不法分子在安裝程式中新增木馬,我可以在網站上公佈由安裝檔案得到的MD5輸出結果。3)SVN在檢測檔案是否在CheckOut後被修改過,也是用到了MD5.
2、防止直接看到明文:
現在很多網站在資料庫儲存使用者的密碼的時候都是儲存使用者密碼的MD5值。這樣就算不法分子得到資料庫的使用者密碼的MD5值,也無法知道使用者的密碼(其實這樣是不安全的,後面我會提到)。(比如在UNIX系統中使用者的密碼就是以MD5(或其它類似的演算法)經加密後儲存在檔案系統中。當使用者登入的時候,系統把使用者輸入的密碼計算成MD5值,然後再去和儲存在檔案系統中的MD5值進行比較,進而確定輸入的密碼是否正確。通過這樣的步驟,系統在並不知道使用者密碼的明碼的情況下就可以確定使用者登入系統的合法性。這不但可以避免使用者的密碼被具有系統管理員許可權的使用者知道,而且還在一定程度上增加了密碼被破解的難度。)
3、防止抵賴(數字簽名):
這需要一個第三方認證機構。例如A寫了一個檔案,認證機構對此檔案用MD5演算法產生摘要資訊並做好記錄。若以後A說這檔案不是他寫的,權威機構只需對此檔案重新產生摘要資訊,然後跟記錄在冊的摘要資訊進行比對,相同的話,就證明是A寫的了。這就是所謂的“數字簽名”。
二、MD5的安全性
從安全的角度講,MD5的輸出為128位,若採用純強力攻擊尋找一個訊息具有給定Hash值的計算困難性為2128,用每秒可試驗1000000000個訊息的計算機需時1.07×1022年。若採用生日攻擊法,尋找有相同Hash值的兩個訊息需要試驗264個訊息,用每秒可試驗1000000000個訊息的計算機需時585年。
三、MD5演算法原理
#### YunSoul技術分享,掃碼關注微信公眾號##
- ——只要你學會了之前所不會的東西,只要今天的你強過了昨天的你,那你就一直是在進階的路上了。