1 - 校驗檔案的作用

從網伺服器下載檔案,尤其是比較大的檔案時,很容易由於網路不穩定,導致斷點續傳發生錯誤。

那要怎麼確保下載檔案的正確有效呢?

比較常見的做法是:提供下載服務的網站,在提供真實檔案的同時,會提供該檔案的校驗值,比如 MD5,SHA1,SHA256 等某種格式,下載完檔案後,計算它的校驗值,如果和網站提供的一致,說明檔案未損壞。

關於校驗值:

校驗值是一組 16 進位制數,不區分大小寫。

校驗值本身只與檔案內容有關,只要檔案內容不改變校驗值就不變,比如拷貝、移動、修改檔案建立時間/訪問時間、修改檔案讀/寫/執行許可權等操作都不會導致校驗值發生改變。

2 - Linux 下生成校驗檔案

(1) 生成校驗檔案:

# 生成 md5 檢驗檔案,檢驗檔案的名稱及字尾可自由定義,但一般情況下與檔名稱相同:
md5sum file.tar > file.tar.md5 # 生成 sha1 校驗檔案:
sha1sum file.tar > file.tar.sha1 # 生成 sha256 檢驗檔案:
sha256sum file.tar > file.tar.sha256

(2) 校驗某個檔案:

# 以 sha256 為例,需要待校驗的檔案,以及 sha256 檔案:
sha256sum -c file.tar.sha256

如果輸出【file.tar: OK】,說明檔案校驗成功。

3 - Windows 下生成校驗檔案

(1) Windows 自帶了 certutil 工具,支援的演算法有:MD2、MD4、MD5、SHA1、SHA256、SHA384、SHA512。

通過 cmd 命令列進入檔案所屬目錄,就可以用 certutil 工具來生成需要的校驗檔案了:

certutil -hashfile file.zip MD5 >> MD5.txt
certutil -hashfile file.zip SHA1 >> SHA1.txt
certutil -hashfile file.zip SHA256 >> SHA256.txt

(2) 如果你安裝了 Git Bash,那還可以使用類似 Linux 的命令:

sha256sum.exe file.zip >> file.zip.sha256

注意:Windows 下的方式 (1) 生成的校驗檔案,與 sha256sum 工具生成的校驗檔案不通用:

$ cat Linux.sha256
26088313ed187d6dbaed81601c536ba62c71109862720bc9b5f6eaba03e456de file.zip # Windows 下方式 (2) 生成的校驗檔案中有一個 * 號:
$ cat Win.sha256
26088313ed187d6dbaed81601c536ba62c71109862720bc9b5f6eaba03e456de *file.zip # Windows 下方式 (1) 生成的校驗檔案與 sha256sum 工具生成的檔案內容明顯不一致:
$ cat Win_certutil.sha256
SHA256 ▒▒ FusionInsight_UpdateService_6.5.0to6.5.1_RHEL.tar.gz ▒▒ϣ:
26088313ed187d6dbaed81601c536ba62c71109862720bc9b5f6eaba03e456de
CertUtil: -hashfile ▒▒▒▒ɹ▒▒▒ɡ▒

建議優先使用 Linux 系統下的工具生成校驗檔案;

若無 Linux 環境,可使用 Git Bash 等工具中的 sha256sum.exe

參考資料

https://blog.csdn.net/qq_28082757/java/article/details/78541581

https://blog.csdn.net/xkwy100/java/article/details/80297968

版權宣告

作者:瘦風(https://healchow.com)

出處:部落格園-瘦風的南牆(https://www.cnblogs.com/shoufeng)

感謝閱讀,公眾號 「瘦風的南牆」 ,手機端閱讀更佳,還有其他福利和心得輸出,歡迎掃碼關注

本文版權歸博主所有,歡迎轉載,但 [必須在頁面明顯位置標明原文連結],否則博主保留追究相關人士法律責任的權利。