MD5概述:
MD5消息摘要算法,屬Hash算法一類。MD5算法對輸入任意長度的消息進行運行,產(chǎn)生一個128位的消息摘要(32位的數(shù)字字母混合碼)。
MD5主要特點:
不可逆,相同數(shù)據(jù)的MD5值肯定一樣,不同數(shù)據(jù)的MD5值不一樣
(一個MD5理論上的確是可能對應無數(shù)多個原文的,因為MD5是有限多個的而原文可以是無數(shù)多個。比如主流使用的MD5將任意長度的“字節(jié)串映射為一個的大整數(shù)。也就是一共有2^128種可能,大概是3.4*10^38,這個數(shù)字是有限多個的,而但是世界上可以被用來加密的原文則會有無數(shù)的可能性)
MD5的性質(zhì):
1、壓縮性:任意長度的數(shù)據(jù),算出的MD5值長度都是固定的(相當于超損壓縮)。
2、容易計算:從原數(shù)據(jù)計算出MD5值很容易。
3、抗修改性:對原數(shù)據(jù)進行任何改動,哪怕只修改1個字節(jié),所得到的MD5值都有很大區(qū)別。
4、弱抗碰撞:已知原數(shù)據(jù)和其MD5值,想找到一個具有相同MD5值的數(shù)據(jù)(即偽造數(shù)據(jù))是非常困難的。
5、強抗碰撞:想找到兩個不同的數(shù)據(jù),使它們具有相同的MD5值,是非常困難的。
雖說MD5有不可逆的特點
但是由于某些MD5破解網(wǎng)站,專門用來查詢MD5碼,其通過
把常用的密碼先MD5處理,并將數(shù)據(jù)存儲起來,然后跟需要查詢的MD5結(jié)果匹配,這時就有可能通過匹配的MD5得到明文,所以有些簡單的MD5碼是反查到加密前原文的。
為了讓MD5碼更加安全,涌現(xiàn)了很多其他方法,如加鹽。 鹽要足夠長足夠亂 得到的MD5碼就很難查到。
MD5用途:
1.防止被篡改:
1)比如發(fā)送一個電子文檔,發(fā)送前,我先得到MD5的輸出結(jié)果a。然后在對方收到電子文檔后,對方也得到一個MD5的輸出結(jié)果b。如果a與b一樣就代表中途未被篡改。
2)比如我提供文件下載,為了防止不法分子在安裝程序中添加木馬,我可以在網(wǎng)站上公布由安裝文件得到的MD5輸出結(jié)果。
3)SVN在檢測文件是否在后被修改過在數(shù)據(jù)庫查詢時md5解密,也是用到了MD5.
2.防止直接看到明文:
現(xiàn)在很多網(wǎng)站在數(shù)據(jù)庫存儲用戶的密碼的時候都是存儲用戶密碼的MD5值。這樣就算不法分子得到數(shù)據(jù)庫的用戶密碼的MD5值,也無法知道用戶的密碼。(比如在UNIX系統(tǒng)中用戶的密碼就是以MD5(或其它類似的算法)經(jīng)加密后存儲在文件系統(tǒng)中。當用戶登錄的時候,系統(tǒng)把用戶輸入的密碼計算成MD5值,然后再去和保存在文件系統(tǒng)中的MD5值進行比較,進而確定輸入的密碼是否正確。通過這樣的步驟,系統(tǒng)在并不知道用戶密碼的明碼的情況下就可以確定用戶登錄系統(tǒng)的合法性。這不但可以避免用戶的密碼被具有系統(tǒng)管理員權(quán)限的用戶知道,而且還在一定程度上增加了密碼被破解的難度。)
3.防止抵賴(數(shù)字簽名):
這需要一個第三方認證機構(gòu)。例如A寫了一個文件,認證機構(gòu)對此文件用MD5算法產(chǎn)生摘要信息并做好記錄。若以后A說這文件不是他寫的,權(quán)威機構(gòu)只需對此文件重新產(chǎn)生摘要信息,然后跟記錄在冊的摘要信息進行比對在數(shù)據(jù)庫查詢時md5解密,相同的話,就證明是A寫的了。這就是所謂的“數(shù)字簽名”。
原理:
太復雜了,不理解,以后在補
.....
程序員燈塔