什麼是MD5?(MD5訊息摘要演算法)

MD5 訊息摘要演算法是一種加密雜湊函式,用於確保傳輸信息完整一致。相較於比對兩組原始數據是否完全相符,MD5 透過建立一組驗證碼來核對兩組數據是否相同。MD5 沿用至今已有若干瑕疵,不再適用於高端加密軟體,但仍適用於一般檔案驗證上。

使用 MD5 檢測器或 MD5 產生器

檔案校驗工具 (FCIV)是微軟免費提供可從實際檔案生成MD5驗證碼的計算工具。你可以閱讀有關如何在 Windows 系統使用檔案校驗工具驗證檔案完整性文章,來學習如何使用命令提示字元進行驗證。

其中取得 MD5 字元、數字、符號等雜湊參數列最簡單的方法,就是透過Miracle SaladMD5 Hash GeneratorPasswords GeneratorOnlineMD5 等 MD5 雜湊算法產生器。

當套用同一組雜湊函式時,則會產出相同的結果,這表示你可以用任一個 MD5 工具從特定文字中取得驗證碼後,再用另一個完全不同的 MD5 產生工具也能生成一樣的結果,重複多次操作後也是如此。

 

MD5 演進史與缺陷

MD5 是美國密碼學家羅納德·李維斯特發明的三大演算法之一。他在1982年研發出適用於 8-bit 電腦的第一組雜湊演算法 MD2,雖然市面上仍採用 MD2,但由於已被證實由於破解難易度過低而不適用於需要高度安全性的資料,隨即在1990年被 MD4 所取代。

MD4 為適用於 32-bit 主機且運行速度遠勝 MD2 的演算法,但本身仍有相對缺陷,現今已被網際網路工程任務組 (IETF)視為過時的工具

1992年釋出的 MD5 同樣適用於 32-bit 主機,雖然運行速度不及 MD4,但安全性卻高於歷代模組。即使如此,MD5 仍有其安全性的疑慮,故多數人仍建議以 SHA-1 等其他加密雜湊函式作為替代方案。

卡內基美隆大學軟體工程研究所 (Carnegie Mellon University Software Engineering Institute) 對於 MD5 有以下看法:

經研究證實,MD5 的加密安全性過低,因此建議軟體研發學者、憑證頒發機構、網站版主與用戶等都應避免再使用該演算法。

2008年美國國家標準暨技術研究所 (National Institute of Standards and Technology, 簡稱 NIST) 接收提議將 MD6 列為 SHA-3 替代方案。

 

關於 MD5 更多相關資料

MD5 是一個輸入不等長度資訊,固定輸出長度 128 bits 且通常以32位元、16進位同位數呈現的演算法。

範例如下:

  • 原始文字:This is a test.
  • 雜湊值:120EA8A25E5D487BF68B5F7096440019

當輸入更多文字時,雜湊函數會將該串文字轉譯成數值不同但字符數目相同的一串英數混合字列。

  • 原始文字:This is a test to show how the length of the text does not matter.
  • 雜湊值:6c16fcac44da359e1c3d81f19181735b

實際上即使原始文字欄位不輸入任何字元,也能產出雜湊值d41d8cd98f00b204e9800998ecf8427e,如果再加上一個句號,則會使整串數值轉譯成5058f1af8388633f609cadb75a75dc9d。

MD5本身具有不可逆性,這表示使用者無法透過驗證碼進行原始資料輸入來源辨認與反查。

例如:

雖然a=0cc175b9c0f1b6a831c399e269772661, p=83878c91171338902e0fe0fb97a8c47a但ap合併輸入後則會產出另一個完全不相關的驗證碼62c428533830d84fd8bc77bf402512fc,因此無法將這兩個字元拆開來取得原始字元。

即便如此,坊間仍有許多像是 MD5Decrypt 與宣稱可以拆解 MD5 的解碼器,但實際上這些解碼器或轉換器只是建立一組龐大的數值驗證碼資料庫供使用者比對是否與原始字元相符的工具。