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