md5sum是一種計算機程序,用於計算與校驗RFC 1321所描述的128位MD5哈希值,此處MD5散列值(或校驗和)作一個文件的數字指紋使用。

功能

理論上看,正如其他散列算法一樣,一個MD5哈希值可對應無限個文件,但從現實的角度看,兩個不同的文件幾乎不可能有相同的MD5哈希值,除非其創建便是刻意為之。一般來說,任何對一個文件的非惡意變更都會導致其MD5哈希值改變,因此md5sum一般用於檢查文件完整性,尤其常用於檢測在文件傳輸、磁盤錯誤或其他無惡意涉入的情況下文件的正確性。

隱患

MD5算法安全性已遭質疑(參見MD5算法缺陷);SHA-1算法也於2017年正式被Google攻破[1]。所以當文件可能遭惡意改動的時候,就不應使用md5sum,而應以sha256sum等求哈希值的工具代之。

分布

在多數UnixLinux與其他類Unix操作系統兼容層都默認安裝了md5sum工具,而其他操作系統(包括Microsoft WindowsBSD的變體Mac OS X)也有相似的工具。在FreeBSD上,有同樣功用的工具名為md5,但其亦帶有額外的特性。

示例

以linux下shell為環境示例,以下文件皆於同一目錄下。

計算校驗值並輸出至hash.md5

$ md5sum filetohashA.txt filetohashB.txt filetohashC.txt > hash.md5

所得文件

文件內包括了哈希值和對應的文件名。

$ cat hash.md5
595f44fec1e92a71d3e9e77456ba80d1  filetohashA.txt
71f920fa275127a7b60fa4d4d41432a3  filetohashB.txt
43c191bf6d6c3f263a8cd0efd4a058ab  filetohashC.txt

以MD5值校驗文件

$ md5sum -c hash.md5
filetohashA.txt: OK
filetohashB.txt: OK
filetohashC.txt: OK

註:在校驗文件內,各個md5校驗值與需比較的文件名間必須有兩個空格,文件內換行也應為UNIX換行符(LF),否則無法進行。

檢查單個MD5值

$ echo "595f44fec1e92a71d3e9e77456ba80d1  filetohashA.txt" | md5sum -c
filetohashA.txt: OK

參見

參考

  1. ^ ShAttered. [2021-02-07]. (原始內容存檔於2017-04-12).