How to Verify and Generate MD5 or SHA512 Checksum

Ubuntu: 20.04

Checksum(校驗碼) 是一種用來驗證檔案正確性的機制,做法是在檔案經過傳輸、備份之前,利用特定的演算法根據檔案內容計算出來的一組驗證用的編碼,因此只要檔案內容有任何微小的變動,產生出來的校驗碼就會完全不一樣。

通常在網路上下載檔案時,都會再附上透過 MD5SHA1SHA256SHA512 計算的 Checksum(校驗碼) ,檔案下載下來之後,再透過一樣的演算法計算一次校驗碼,確保校驗碼一致,以避免檔案損毀或遭到篡改。

MD5

MD5 Checksum 是最普遍的一種校驗碼,其長度固定都是 128 位元。

Linux 系統中可以使用 md5sum 指令來進行產生及驗證 Checksum

Generating MD5 checksum

# 產生 test.txt 的 checksum
md5sum test.txt

# 同時產生多組 checksum
md5sum test1.txt test2.txt test3.txt

# 可以將 checksum 存成檔案
md5sum test1.txt test2.txt test3.txt > test.md5sum

執行以後會以 checksum + file name 的格式輸出。

6f3fd97cdac500437314fff776a85e90  test1.txt
326371edddd530a8e7f9526f5e9b0bce  test2.txt
c0cadfcd7f4f08f7dc5e96eee294ed04  test3.txt

Verifying MD5 checksum

# 利用 -c 參數驗證 checksum
md5sum -c test.md5sum

驗證結果

test1.txt: OK
test2.txt: OK
test3.txt: OK

SHA512

MD5 Checksum 雖然是最普遍的機制,但 MD5 本身無法防止 Collision Attack(碰撞攻擊),因此如果是高度安全需求的檔案,建議都用 SHA-2 以上的演算法。

SHA512 為例,只要透過 sha512sum 指令就可以產生校驗碼,操作方法與 md5sum 相同。

範例

# Generating SHA512 checksum
sha512sum test.txt > test.sha512

# Verifying SHA512 checksum
sha512sum -c test.sha512
Categories: Linux