檔案雜湊計算|用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已被證實存在碰撞攻擊,不適合用於檢測惡意篡改。
檔案雜湊驗證步驟
- 放入檔案 將要確認的檔案拖入框內,或點選選擇。較大的檔案請在計算完成前不要關閉分頁。
- 查看雜湊值 四種演算法的結果會並排顯示。請查看釋出方所使用演算法對應的值。
- 與公開值比對 在比對欄貼上官方網站公開的雜湊值,即可自動判定與哪種演算法一致。
- 不一致時不要使用 請先確認是否複製有誤,若仍不一致,請不要執行該檔案,刪除後從官方網站重新取得。
用好本工具的小技巧
- 如果釋出方沒有說明使用了哪種演算法,只需將雜湊值貼上到比對欄,即可自動判斷匹配的演算法。
- 較大的檔案(數百MB以上)會佔用較多瀏覽器記憶體,計算可能需要幾秒到一分鐘,請保持標籤頁開啟。
- ISO映象、安裝程式等一旦被篡改危害較大的檔案,建議養成核對雜湊值的習慣。
- MD5・SHA-1已被證實存在碰撞攻擊,不適合用於檢測惡意篡改。對安全性要求高的場景請使用SHA-256及以上演算法。
檔案雜湊驗證的應用場景
驗證ISO映象和安裝程式
作業系統映象和可執行檔一旦被篡改危害極大。執行前養成與官方雜湊值比對的習慣。
確認大容量檔案傳輸是否出錯
可以確認在網路不穩定環境下收到的檔案是否缺失內容,比單純檢視檔案大小更可靠。
確認備份與原始檔案一致
將複製或移動後的檔案雜湊值與原始檔案比對,即可驗證內容是否完全一致。
判別重複檔案
即使檔名不同,只要雜湊值相同,內容就是一致的,可作為整理檔案的依據。
雜湊相關術語
- 雜湊值
- 根據資料計算出的定長字串。相同的輸入總是得到相同的值。
- 校驗值
- 為確認檔案是否損壞而公開的值。雜湊值被廣泛用於此用途。
- 碰撞
- 兩個不同的資料得到相同雜湊值的狀態。MD5和SHA-1已被證實可以被人為構造出來。
- 雪崩效應
- 輸入僅發生極微小變化,輸出就會完全不同的性質。這是能夠檢測出極小損壞的依據。
- SHA-256
- 生成256位長度雜湊值的演算法,目前是下載驗證中最廣泛使用的標準。
常見問題
閒話 ― 為什麼官方網站要公開雜湊值
您可能在軟體網站的下載連結旁見過類似"SHA256: a1b2c3..."的雜湊值。這是為了讓使用者能夠自行驗證:這個檔案確實是釋出者建立的原始檔案,在傳輸過程中未損壞,也未在映象伺服器上被篡改。
這一點在Linux發行版的ISO映象分發中尤為重要,因為使用者通常通過分佈在世界各地的映象伺服器下載。除了普通的傳輸錯誤外,理論上還存在惡意攻擊者入侵映象伺服器、分發含有惡意軟體的篡改版本的風險。如果官方網站公開了經過簽名的雜湊值列表(通常附有GPG簽名),使用者無論從哪個映象下載,只需在本地計算雜湊值並比對,就能驗證安全性。
雜湊函式具有"雪崩效應":即使輸入只改變一個位元,輸出也會截然不同。這使得無論是蓄意篡改還是下載過程中的細微損壞,都能被可靠地檢測出來。即使兩個檔案大小相同,只要有一個位元組不同,雜湊值就會完全不同,因此比單純核對檔案大小可靠得多。