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).