MD5 算法


因為要保證數據的完整一致性,采用了MD5算法。然后做一個簡單的了解

一、MD5概念
MD5,全名Message Digest Algorithm 5 ,中文名為消息摘要算法第五版,
為計算機安全領域廣泛使用的一種散列函數,用以提供消息的完整性保護。
上面這段話話引用自百度百科,MD5是一種信息摘要算法,主要是通過特定的hash散列方法將文本信息轉換成簡短的信息摘要
壓縮+加密+hash算法的結合體,是絕對不可逆的。


二、MD5計算步驟  
MD5以512位分組來處理輸入的信息,且每一分組又被划分為16個32位子分組,經過了一系列的處理后,算法的輸出由四個32位分組組成,將這四個32位分組級聯后將生成一個128位散列值。
第一步、填充
     如果輸入信息的長度(bit)對512求余的結果不等於448,就需要填充使得對512求余的結果等於448。
     填充的方法是填充一個1和n個0。填充完后,信息的長度就為N*512+448(bit);


第二步、記錄信息長度
     用64位來存儲填充前信息長度。這64位加在第一步結果的后面,這樣信息長度就變為N*512+448+64=(N+1)*512位。


第三步、裝入標准的幻數(四個整數)
     標准的幻數(物理順序)是(A=(01234567)16,B=(89ABCDEF)16,C=(FEDCBA98)16,D=(76543210)16)。如果在程序中定義應該是(A=0X67452301L,B=0XEFCDAB89L,C=0X98BADCFEL,D=0X10325476L)。有點暈哈,其實想一想就明白了。


第四步、四輪循環運算
     循環的次數是分組的個數(N+1)
   1)將每一512字節細分成16個小組,每個小組64位(8個字節)    
   2)先認識四個線性函數(&是與,|是或,~是非,^是異或)
   
   
三、MD5應用
1.密碼
  可以當做密碼驗證,為了保證密碼不在cmd5網站上破譯,最好加鹽及亂序,也可以只取一半md5的長度。md5是不可逆算法,只要保證算法不變,就能和數據庫中的md5相匹配。

2.搜索
  以搜索為例,你輸入“csdn 博客” 和 輸入“博客 csdn”的結果是不一樣的,因為你搜索的時候他們對應的md5是不一樣的,他們可以根據這個md5去查詢內容。

3.版權
  當一個視頻或者音頻創作出來的時候它的md5是唯一的,若以后有翻錄等版本出來,即使畫質,聲音,文件名都一樣,但是他們的md5驗證是不一樣的,所以可以驗證版權。還比如用某一賬戶下載的視頻它的賬戶信息也回和視頻一起md5操作,如果以后這個人私自傳播通過md5就可以去數據庫中查找泄露版權的情況。

4.文件完整性的校驗
  當下載一個文件時,服務器返回的信息中包括這個文件的md5,在本地下載完畢時進行md5,將兩個md5值進行比較,如果一致則說明文件完整沒有丟包現象。

5.文件上傳
  文件上傳時會上傳文件的信息此時將文件的md5上傳,服務器中存儲這個md5值,並存儲這個md5值所對應的已上傳字節長度,比如未上傳對應為0,已上傳對應為-1,已上傳200字節就對應200,這個上傳的時候可以匹配到這個文件在服務器中的狀態,方便做斷點續傳,只要源文件沒有更改,即使換個名字,換個賬戶都可以在服務器找到對應的文件,所以當服務器中有已經上傳完畢的此文件時,別人再上傳這個文件就可以實現秒傳。



四、說明
     對於MD5算法,不同的讀取格式產生的字節流是不一樣的,而且涉及計算可能需要數據格式轉換,如把bit轉換成一定的整型數據方便計算,因此,不同MD5算法實現版本算出的結果可能有很大不一樣。
因此,我覺得最好多次計算的MD5算法版本一致。關於MD5算法,有一個比較好的在線計算工具,點擊MD5在線計算器。
MD5算法是不可逆的,但是,基於鍵值對的字典關系原理,有一些收集海量MD5信息與摘要的數據庫,采用枚舉法能夠從MD5值找到原文本信息,提供一個類似的工具,點擊MD5在線破解。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM