檔案雜湊計算|用MD5・SHA-1・SHA-256・SHA-512驗證下載檔案是否被篡改

拖放檔案即可一次性計算MD5・SHA-1・SHA-256・SHA-512雜湊值。與釋出方公開的校驗值比對,確認下載的檔案未損壞或被篡改。檔案不會上傳到伺服器。

雜湊演算法對照表

演算法 輸出位數 十六進位制字元數 主要用途
MD5 128位 32個字元 僅適合輕量級完整性檢查。密碼學安全性已被攻破,不可用於密碼儲存或數字簽名
SHA1 160位 40個字元 比MD5更安全,但碰撞攻擊已被證實。仍用於Git提交雜湊等非安全場景
SHA256 256位 64個字元 目前仍被認為安全,是驗證軟體下載完整性最常用的標準演算法
SHA512 512位 128個字元 輸出比SHA-256更長,在64位CPU上有時計算速度更快

什麼是檔案雜湊

雜湊值是根據檔案全部內容計算出的定長字串,相當於該檔案的「指紋」。哪怕只有1個位元組不同,計算出的值也會完全不同,因此只需與釋出方公開的值比對,就能確認下載的檔案是否損壞或被篡改。本工具只需放入檔案,即可一次性計算MD5・SHA-1・SHA-256・SHA-512。

計算全部在瀏覽器內完成,檔案內容不會被傳送到外部。不過由於需要將整個檔案讀入記憶體,數GB規模的大檔案可能計算緩慢甚至失敗。另外MD5和SHA-1已被證實存在碰撞攻擊,不適合用於檢測惡意篡改。

檔案雜湊驗證步驟

  1. 放入檔案 將要確認的檔案拖入框內,或點選選擇。較大的檔案請在計算完成前不要關閉分頁。
  2. 查看雜湊值 四種演算法的結果會並排顯示。請查看釋出方所使用演算法對應的值。
  3. 與公開值比對 在比對欄貼上官方網站公開的雜湊值,即可自動判定與哪種演算法一致。
  4. 不一致時不要使用 請先確認是否複製有誤,若仍不一致,請不要執行該檔案,刪除後從官方網站重新取得。

用好本工具的小技巧

  • 如果釋出方沒有說明使用了哪種演算法,只需將雜湊值貼上到比對欄,即可自動判斷匹配的演算法。
  • 較大的檔案(數百MB以上)會佔用較多瀏覽器記憶體,計算可能需要幾秒到一分鐘,請保持標籤頁開啟。
  • ISO映象、安裝程式等一旦被篡改危害較大的檔案,建議養成核對雜湊值的習慣。
  • MD5・SHA-1已被證實存在碰撞攻擊,不適合用於檢測惡意篡改。對安全性要求高的場景請使用SHA-256及以上演算法。

檔案雜湊驗證的應用場景

驗證ISO映象和安裝程式

作業系統映象和可執行檔一旦被篡改危害極大。執行前養成與官方雜湊值比對的習慣。

確認大容量檔案傳輸是否出錯

可以確認在網路不穩定環境下收到的檔案是否缺失內容,比單純檢視檔案大小更可靠。

確認備份與原始檔案一致

將複製或移動後的檔案雜湊值與原始檔案比對,即可驗證內容是否完全一致。

判別重複檔案

即使檔名不同,只要雜湊值相同,內容就是一致的,可作為整理檔案的依據。

雜湊相關術語

雜湊值
根據資料計算出的定長字串。相同的輸入總是得到相同的值。
校驗值
為確認檔案是否損壞而公開的值。雜湊值被廣泛用於此用途。
碰撞
兩個不同的資料得到相同雜湊值的狀態。MD5和SHA-1已被證實可以被人為構造出來。
雪崩效應
輸入僅發生極微小變化,輸出就會完全不同的性質。這是能夠檢測出極小損壞的依據。
SHA-256
生成256位長度雜湊值的演算法,目前是下載驗證中最廣泛使用的標準。

常見問題

請先重新核對官方雜湊值,確認沒有複製錯誤(如混入換行符或多餘空格)。如果仍不一致,檔案可能已損壞或被篡改,強烈建議不要執行該檔案並刪除,然後從官方網站重新下載。

以釋出方公開的演算法為準。如果公開了多種演算法,建議優先選擇更安全的SHA-256或SHA-512。MD5・SHA-1的密碼學安全性已被攻破,不足以檢測惡意篡改。

兩者的演算法完全相同,區別僅在於計算物件是文本字串還是二進位制檔案。如需計算文本字串的雜湊值,請使用姊妹工具文本雜湊一鍵計算

只要瀏覽器有足夠的可用記憶體即可計算,但由於會將整個檔案一次性讀入記憶體,數GB規模的超大檔案可能導致瀏覽器變慢甚至失敗。
工具君

閒話 ― 為什麼官方網站要公開雜湊值

您可能在軟體網站的下載連結旁見過類似"SHA256: a1b2c3..."的雜湊值。這是為了讓使用者能夠自行驗證:這個檔案確實是釋出者建立的原始檔案,在傳輸過程中未損壞,也未在映象伺服器上被篡改。

這一點在Linux發行版的ISO映象分發中尤為重要,因為使用者通常通過分佈在世界各地的映象伺服器下載。除了普通的傳輸錯誤外,理論上還存在惡意攻擊者入侵映象伺服器、分發含有惡意軟體的篡改版本的風險。如果官方網站公開了經過簽名的雜湊值列表(通常附有GPG簽名),使用者無論從哪個映象下載,只需在本地計算雜湊值並比對,就能驗證安全性。

雜湊函式具有"雪崩效應":即使輸入只改變一個位元,輸出也會截然不同。這使得無論是蓄意篡改還是下載過程中的細微損壞,都能被可靠地檢測出來。即使兩個檔案大小相同,只要有一個位元組不同,雜湊值就會完全不同,因此比單純核對檔案大小可靠得多。