MD5(單向散列算法)的全稱是Message-Digest Algorithm 5(信息-摘要算法),經MD二、MD3和MD4發展而來。MD5算法的使用不須要支付任何版權費用。html
MD5功能:算法
MD5加密算法因爲其具備較好的安全性,加之商業也能夠無償使用該算法,所以該加密算法被普遍使用,md5算法主要運用在數字簽名、文件完整性驗證以及口令加密等方面。數據庫
用途: 一、防止被篡改:安全
1)好比發送一個電子文檔,發送前,我先獲得MD5的輸出結果a。而後在對方收到電子文檔後,對方也獲得一個MD5的輸出結果b。若是a與b同樣就表明中途未被篡改。2)好比我提供文件下載,爲了防止不法分子在安裝程序中添加木馬,我能夠在網站上公佈由安裝文件獲得的MD5輸出結果。3)SVN在檢測文件是否在CheckOut後被修改過,也是用到了MD5.微信
二、防止直接看到明文:網站
如今不少網站在數據庫存儲用戶的密碼的時候都是存儲用戶密碼的MD5值。這樣就算不法分子獲得數據庫的用戶密碼的MD5值,也沒法知道用戶的密碼(其實這樣是不安全的,後面我會提到)。(好比在UNIX系統中用戶的密碼就是以MD5(或其它相似的算法)經加密後存儲在文件系統中。當用戶登陸的時候,系統把用戶輸入的密碼計算成MD5值,而後再去和保存在文件系統中的MD5值進行比較,進而肯定輸入的密碼是否正確。經過這樣的步驟,系統在並不知道用戶密碼的明碼的狀況下就能夠肯定用戶登陸系統的合法性。這不但能夠避免用戶的密碼被具備系統管理員權限的用戶知道,並且還在必定程度上增長了密碼被破解的難度。)加密
三、防止抵賴(數字簽名):.net
這須要一個第三方認證機構。例如A寫了一個文件,認證機構對此文件用MD5算法產生摘要信息並作好記錄。若之後A說這文件不是他寫的,權威機構只需對此文件從新產生摘要信息,而後跟記錄在冊的摘要信息進行比對,相同的話,就證實是A寫的了。這就是所謂的「數字簽名」。orm
從安全的角度講,MD5的輸出爲128位,若採用純強力攻擊尋找一個消息具備給定Hash值的計算困難性爲2128,用每秒可試驗1000000000個消息的計算機需時1.07×1022年。若採用生日攻擊法,尋找有相同Hash值的兩個消息須要試驗264個消息,用每秒可試驗1000000000個消息的計算機需時585年。cdn