簡述MD5信息摘要算法

在之前的文章中,我們聊了不少的加密算法,今天我們聊一種被廣泛使用的密碼散列函數——MD5。

MD5

MD5又叫MD5信息摘要算法,經常用于確保信息傳輸的完整性和一致性 。從嚴格意義上來說,MD5并不是加密算法,只能是一種哈希算法或是叫做摘要算法。MD5算法對比普通的加密算法缺少了解密的過程,它無法從密文(散列值)反過來得到原文。

MD5應用場景

  • 用戶密碼保護

在保存用戶密碼時,不記錄密碼本身,只記錄密碼的MD5結果(即使數據庫被盜也無法反推出明文)。

密碼保護
圖片來源于網絡
  • 文件完整性校驗

先在發(fā)送端計算一次文件的MD5,并把結果發(fā)送給接收端,接收端在接受文件后也計算一次MD5,兩次結果一致文件完整。

  • 垃圾郵件篩選

在電子郵件使用越來越普遍的情況下,可以利用 MD5 算法在郵件接收服務器上進行垃圾郵件的篩選,以減少此類郵件的干擾。

MD5應用
圖片來源于網絡
  • 數字簽名

發(fā)布程序時同時發(fā)布其MD5,下載后比較MD5是否相同,就可知道程序是否被篡改。

MD5算法原理

MG5以512位分組來處理輸入的信息,每一分組又被劃分為16個32位子分組。經過了一系列的處理后,算法的輸出由四個32位分組組成,將這四個32位分組級聯(lián)后將生成一個128位散列值。

在MD5算法中,首先需要對信息進行填充,填充方法如下:先在信息后面填充一個1,之后就是無數個0,直到使其字節(jié)長度對512求余數的結果等于448,即(n*512) + 448 ,為什么要使余數為448呢,因為剩下的512-448 等于64位 是用于表示填充前的信息長度。加上剩下的64位,即(n+1)*512,長度剛剛好是512的整數倍數。

然后就與鏈接變量進行循環(huán)運算,得出結果。MD5中有四個32位被稱作鏈接變量(Chaining Variable)的整數參數,它們分別為:A=0x01234567,B=0x89abcdef,C=0xfedcba98,D=0x76543210。當設置好這四個鏈接變量后,就開始進入算法的四輪循環(huán)運算。

MD5算法原理
圖片來源于網絡

MD5的特點

  1. 壓縮性:無論數據長度是多少,計算出來的MD5值長度相同。
  2. 容易計算性:由原數據容易計算出MD5值。
  3. 抗修改性:即便修改一個字節(jié),計算出來的MD5值也會巨大差異。
  4. 抗碰撞性:知道數據和MD5值,很小概率找到相同MD5值相同的原數據。
MD5
圖片來源于網絡

MD5雖然理論上不可逆,但還是可以通過“查字典”的方式獲取MD5原文信息,并且因為MD5的碰撞性,決定了存在兩個不同的輸入信息,其MD5相同的可能,因此不適用于安全性認證。

免責聲明:素材源于網絡,如有侵權,請聯(lián)系刪稿。