md5sum
md5sum
是一種計算機程序,用於計算與校驗RFC 1321所描述的128位MD5哈希值,此處MD5散列值(或校驗和)作一個文件的數字指紋使用。
功能
理論上看,正如其他散列算法一樣,一個MD5哈希值可對應無限個文件,但從現實的角度看,兩個不同的文件幾乎不可能有相同的MD5哈希值,除非其創建便是刻意為之。一般來說,任何對一個文件的非惡意變更都會導致其MD5哈希值改變,因此md5sum
一般用於檢查文件完整性,尤其常用於檢測在文件傳輸、磁盤錯誤或其他無惡意涉入的情況下文件的正確性。
隱患
MD5算法安全性已遭質疑(參見MD5算法缺陷);SHA-1算法也於2017年正式被Google攻破[1]。所以當文件可能遭惡意改動的時候,就不應使用md5sum
,而應以sha256sum
等求哈希值的工具代之。
分布
在多數Unix、Linux與其他類Unix操作系統或兼容層都默認安裝了md5sum
工具,而其他操作系統(包括Microsoft Windows與BSD的變體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