MD5 與 SHA-256 雜湊值檢查

計算任何檔案的 MD5、SHA-256、SHA-1 和 SHA-512 雜湊值,並與下載頁面上的檢查碼比對。貼上預期的檢查碼,馬上就知道是否相符。檔案只會在你的瀏覽器中讀取,絕不會上傳,所以多大的檔案都能檢查。

最後更新:

會自動辨識 MD5、SHA-1、SHA-256 和 SHA-512。

什麼是檢查碼?

檢查碼(也叫雜湊值)是根據檔案中每一個位元組計算出來的一串簡短英數字。同一個檔案永遠會算出同樣的檢查碼,只要改動任何一個位元組,算出來的結果就會完全不同。因此它就像是檔案內容的指紋。

軟體發布者會把檢查碼列在下載連結旁邊。如果你下載的檔案算出來的檢查碼和他們公布的一樣,就代表你拿到的正是他們發布的檔案,而不是損毀或被竄改過的版本。

為什麼要驗證下載的檔案

  • 下載損毀:網路斷線或硬碟故障,都可能讓大型檔案在沒有任何錯誤訊息的情況下損毀。損毀的 ISO 映像檔常常裝到一半才出問題,那時你早就忘了它是從哪裡下載的。
  • 檔案遭竄改:攻擊者入侵下載鏡像站後,可以把檔案換成植入惡意程式的版本。2016 年,Linux Mint 官網就曾遭駭,下載連結被導向含有後門的 ISO。
  • 下載錯檔案:比對檢查碼也能發現版本拿錯的情況,例如下載到 ARM 版而不是 x64 版,或是從快取拿到舊版。

如何線上檢查檔案雜湊值

  1. 把下載好的檔案拖曳到上方的工具,或點擊選擇檔案。
  2. 從下載頁面複製檢查碼,貼到「預期的檢查碼」欄位。
  3. 工具會告訴你兩者是否相符,並依檢查碼長度自動辨識 MD5、SHA-1、SHA-256 和 SHA-512。

你也可以直接貼上檢查碼檔案中的整行內容,例如 9f86d0...0a08 *ubuntu.iso,工具會自動擷取出檢查碼。

為什麼私人檔案也能放心使用

大多數線上雜湊值計算工具會先把檔案上傳到它們的伺服器。這個工具則是用你瀏覽器本身的運算能力,把檔案分成小塊讀取,所以資料完全不會離開你的裝置。也因為不用上傳,不必等待,超大檔案也能處理。

如何在 Windows 上檢查 MD5 或 SHA-256 雜湊值

Windows 的 PowerShell 內建檢查碼工具。開啟 PowerShell(在「開始」功能表搜尋即可),切換到檔案所在的資料夾,然後執行:

cd $HOME\Downloads
Get-FileHash .\ubuntu.iso

預設會顯示 SHA-256 檢查碼。如果要用其他演算法,加上 -Algorithm MD5、-Algorithm SHA1 或 -Algorithm SHA512。若不想一個字一個字比對,可以直接執行:

(Get-FileHash .\ubuntu.iso).Hash -eq "在這裡貼上預期的檢查碼"

相符時 PowerShell 會顯示 True,不相符則顯示 False。如果用的是舊版命令提示字元,請改用 certutil -hashfile ubuntu.iso SHA256。

如何在 Mac 上檢查 MD5 或 SHA-256 雜湊值

開啟「終端機」(位於「應用程式」>「工具程式」),切換到檔案所在的資料夾,然後執行:

cd ~/Downloads
shasum -a 256 app.dmg

若要計算 SHA-1 或 SHA-512,把 256 換成 1 或 512。MD5 則執行 md5 app.dmg。想讓終端機幫你比對檢查碼,可以執行:

echo "在這裡貼上預期的檢查碼  app.dmg" | shasum -a 256 -c

相符時會顯示 app.dmg: OK。請注意,檢查碼和檔名之間要有兩個空格。

如何在 Linux 上檢查 MD5 或 SHA-256 雜湊值

各大 Linux 發行版都內建檢查碼工具。在終端機中執行:

sha256sum ubuntu.iso

md5sum、sha1sum 和 sha512sum 的用法也一樣。許多專案會發布一個列出所有下載檔案的檢查碼檔,檔名通常是 SHA256SUMS。把它放在和你的檔案同一個資料夾,然後執行:

sha256sum -c SHA256SUMS --ignore-missing

每個相符的檔案都會顯示 ubuntu.iso: OK。--ignore-missing 會略過清單中你沒有下載的檔案。

MD5、SHA-1、SHA-256、SHA-512 比較

這四種演算法的用途都一樣,但 MD5 和 SHA-1 已經無法防範有心人刻意偽造檔案。它們仍然能抓出意外造成的損毀,所以很多下載頁面還是會列出來。

檢查碼演算法比較
演算法長度安全性常見用途
MD5長度32 個字元安全性已被破解,可以刻意做出兩個檢查碼相同的不同檔案常見用途檢查下載是否損毀或不完整
SHA-1長度40 個字元安全性基於同樣的原因,自 2017 年起已被破解常見用途舊的下載頁面和 Git
SHA-256長度64 個字元安全性安全常見用途目前軟體下載的標準
SHA-512長度128 個字元安全性安全常見用途部分 Linux 發行版和資安工具

如果下載頁面提供多種檢查碼,請使用 SHA-256 或 SHA-512。

檢查碼不相符時怎麼辦

請不要開啟或安裝這個檔案。接著依照可能性由高到低,逐一確認:

  • 確認你比對的是同一種演算法。SHA-256 檢查碼永遠不可能和 MD5 相符。
  • 確認你下載的版本正是檢查碼所對應的版本,包括版本號碼,以及是 x64 還是 ARM。
  • 刪除檔案後重新下載,最好從官方網站而不是鏡像站下載。
  • 如果從官方網站重新下載後還是不相符,請聯絡發布者,並且不要使用這個檔案。

檢查碼無法告訴你的事

檢查碼相符,只能證明你的檔案和當初用來計算檢查碼的檔案完全一樣,並不能證明那個檔案是安全的。如果攻擊者掌控了網站,他們可以同時替換下載檔案和旁邊的檢查碼。

想要更周全的保護,請從與檔案不同的來源取得檢查碼,例如從鏡像站下載時,到官方網站查檢查碼。有些專案還會用 GPG 簽署檢查碼檔,證明檢查碼確實出自發布者。

常見問題

不會。檔案由你的瀏覽器讀取,檢查碼也在你自己的裝置上計算。這個頁面載入後,就算中斷網路連線,工具也能照常運作。

沒有。檔案會分成小塊讀取,而不是一次全部載入,所以好幾 GB 的 ISO 映像檔也沒問題。所需時間取決於你裝置的速度。

沒有。檢查碼是十六進位數字,所以「A1B2」和「a1b2」是同一個值。Windows 會以大寫顯示檢查碼,其他大多數工具則用小寫,這個工具會忽略兩者的差異。

不會。檢查碼只根據檔案內容計算,檔名、所在資料夾和修改日期都不會影響結果。

理論上可能,因為可能的檔案數量比檢查碼還多。不過至今還沒有人找到 SHA-256 的這種例子,而且要找到所需的運算能力,遠超過全世界現有的總和。至於 MD5 和 SHA-1,研究人員已經能刻意做出相符的檔案組合,所以不該用它們來防範竄改。

用下載頁面提供的那一種,因為只有同類型的檢查碼才能互相比對。如果可以選擇,請選 SHA-256。這個工具會一次算出四種,所以你不必事先決定。

私密分享檔案

透過端對端加密連結傳送檔案。免費、不用帳號,而且我們看不到你傳送的內容。

分享檔案