How to Verify and Generate MD5 or SHA512 Checksum
Ubuntu: 20.04
Checksum(校驗碼)
是一種用來驗證檔案正確性的機制,做法是在檔案經過傳輸、備份之前,利用特定的演算法根據檔案內容計算出來的一組驗證用的編碼,因此只要檔案內容有任何微小的變動,產生出來的校驗碼就會完全不一樣。
通常在網路上下載檔案時,都會再附上透過 MD5
、SHA1
、SHA256
或 SHA512
計算的 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