天天看點

密碼學摘要算法之MD5摘要算法MD5

密碼學摘要算法之MD5

  • 摘要算法
  • MD5
    • 原理
    • 特點
    • 用途
      • 防止被篡改,一緻性檢驗
      • 數字簽名(防止抵賴或者說版權)
        • 舉例:
      • 安全通路認證
      • 搜尋引擎
      • 百度雲||360上傳的秒傳功能
      • 視訊封殺
    • 提升MD5加密安全性

摘要算法

摘要算法是一種能産生特殊輸出格式的算法,這種算法的特點是:無論使用者輸入什麼長度的原始資料,經過計算後輸出的密文都是固定長度的,這種算法的原理是根據一定的運算規則對原資料進行某種形式的提取,這種提取就是摘要,被摘要的資料内容與原資料有密切 聯系,隻要原資料稍有改變,輸出的“摘要”便完全不同,是以,基于這種原理的算法便能對 資料完整性提供較為健全的保障。但是,由于輸出的密文是提取原資料經過處理的定長值,是以它已經不能還原為原資料,即消息摘要算法是不可逆的,理論上無法通過反向運算取得 原資料内容,是以它通常隻能被用來做資料完整性驗證。
           

如今常用的“消息摘要”算法經曆了多年驗證發展而保留下來的算法已經不多,這其中包 括 MD2、MD4、MD5、SHA、SHA-1/256/383/512 等。

常用的摘要算法主要有 MD5 和 SHA1。D5 的輸出結果為 16 位元組,sha1 的輸出結果為 20 位元組

MD5

MD5(單向雜湊演算法)的全稱是Message-Digest Algorithm 5(資訊-摘要算法),經MD2、MD3和MD4發展而來。
           

原理

MD5以512位分組來處理輸入的資訊,且每一分組又被劃分為16個32位子分組,經過了一系列的處理後,算法的輸出由四個32位分組組成,将這四個32位分組級聯後将生成一個128位散列值

特點

  1. 輸入任意長度的資訊,經過處理,輸出為128位的資訊(數字指紋)
  2. 不同的輸入得到不同的結果(唯一性)
  3. 根據128位輸出的結果不可能反推出輸入的資訊(不可逆)

用途

防止被篡改,一緻性檢驗

  • 比如發送一個電子文檔,發送前,我先得到MD5的輸出結果a。然後在對方收到電子文檔後,對方也得到一個MD5的輸出結果b。如果a與b一樣就代表中途未被篡改
  • 比如我提供檔案下載下傳,為了防止不法分子在安裝程式中添加木馬,我可以在網站上公布由安裝檔案得到的MD5輸出結果
  • SVN在檢測檔案是否在CheckOut後被修改過,也是用到了MD5.

數字簽名(防止抵賴或者說版權)

  • 這需要一個第三方認證機構。例如A寫了一個檔案,認證機構對此檔案用MD5算法産生摘要資訊并做好記錄。若以後A說這檔案不是他寫的,權威機構隻需對此檔案重新産生摘要資訊,然後跟記錄在冊的摘要資訊進行比對,相同的話,就證明是A寫的了。這就是所謂的“數字簽名”。

舉例:

  • 比如下載下傳伺服器針對一個檔案預先提供一個MD5值,使用者下載下傳完該檔案後,用我這個算法重新計算下載下傳檔案的MD5值,通過比較這兩個值是否相同,就能判斷下載下傳的檔案是否出錯,或者說下載下傳的檔案是否被篡改了
  • 比如一張圖檔,
    密碼學摘要算法之MD5摘要算法MD5
    這張是正版(1.jpg),那我打開圖檔截取一張同樣的圖檔(8.jpg),肉眼看上去是一樣的,但怎麼區分誰是正版誰是盜版呢,其實就是把正版圖檔(1.jpg)進行加密,交給第三方認證機構,以固定其為原版
    密碼學摘要算法之MD5摘要算法MD5

安全通路認證

在Unix系統中使用者的密碼是以MD5(或其它類似的算法)經Hash運算後存儲在檔案系統中。當使用者登入的時候,系統把使用者輸入的密碼進行MD5 Hash運算,然後再去和儲存在檔案系統中的MD5值進行比較,進而确定輸入的密碼是否正确。通過這樣的步驟,系統在并不知道使用者密碼的明碼的情況下就可以确定使用者登入系統的合法性

搜尋引擎

比如百度搜尋輸入cto51和51cto得到的結果是一樣的,百度是怎麼知道兩者是一樣的呢,其實是把’51’和’cto’進行MD5加密後按位運算,如果結果一緻,則搜尋結果相同

密碼學摘要算法之MD5摘要算法MD5

百度雲||360上傳的秒傳功能

原理:隻要伺服器上有上傳的檔案,對比檔案的MD5值,實作秒傳

視訊封殺

如何封殺:找MD5值,找到所有這個值對應的檔案

逃避:

(1)壓縮一下,使其MD5值發生改變

密碼學摘要算法之MD5摘要算法MD5

可以看到和之前對1.jpg這張圖檔本身進行MD5加密的值完全不同

(2)對檔案進行base64編碼

密碼學摘要算法之MD5摘要算法MD5

從上可以看出base64編碼後的檔案 MD5值與原檔案完全不一樣,百度雲搜尋不到,而你下載下傳完成後的檔案再解碼還原檔案,其MD5值未方式改變

提升MD5加密安全性

  • 加’鹽’:實質上就是把所有儲存的密碼拼接一段固定的字元串然後進行加密,字元串盡可能的複雜,已增強破解難度. 破解平台
  • HMAC:給定一個"秘鑰",對明文進行加密,并且做"兩次散列"!-> 得到的結果,還是32個字元(後面再詳細介紹)

繼續閱讀