什麼是檢查碼?
檢查碼(也叫雜湊值)是根據檔案中每一個位元組計算出來的一串簡短英數字。同一個檔案永遠會算出同樣的檢查碼,只要改動任何一個位元組,算出來的結果就會完全不同。因此它就像是檔案內容的指紋。
軟體發布者會把檢查碼列在下載連結旁邊。如果你下載的檔案算出來的檢查碼和他們公布的一樣,就代表你拿到的正是他們發布的檔案,而不是損毀或被竄改過的版本。
為什麼要驗證下載的檔案
- 下載損毀:網路斷線或硬碟故障,都可能讓大型檔案在沒有任何錯誤訊息的情況下損毀。損毀的 ISO 映像檔常常裝到一半才出問題,那時你早就忘了它是從哪裡下載的。
- 檔案遭竄改:攻擊者入侵下載鏡像站後,可以把檔案換成植入惡意程式的版本。2016 年,Linux Mint 官網就曾遭駭,下載連結被導向含有後門的 ISO。
- 下載錯檔案:比對檢查碼也能發現版本拿錯的情況,例如下載到 ARM 版而不是 x64 版,或是從快取拿到舊版。
如何線上檢查檔案雜湊值
- 把下載好的檔案拖曳到上方的工具,或點擊選擇檔案。
- 從下載頁面複製檢查碼,貼到「預期的檢查碼」欄位。
- 工具會告訴你兩者是否相符,並依檢查碼長度自動辨識 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.isomd5sum、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 簽署檢查碼檔,證明檢查碼確實出自發布者。
常見問題
私密分享檔案
透過端對端加密連結傳送檔案。免費、不用帳號,而且我們看不到你傳送的內容。
分享檔案