如何在瀏覽器中檢查下載檔案的 SHA-256 校驗碼
校驗碼是從檔案內容計算出的一段短指紋。如果你對下載的檔案計算雜湊值,結果與發布者列出的數值相符,代表檔案與發布者計算雜湊時的檔案逐位元完全相同。只要有一個位元不同,指紋就會完全改變。把檔案拖進 雜湊產生器,貼上公布的數值,工具就會顯示哪一種演算法相符。
雜湊產生器下載的檔案正確嗎?免費使用校驗碼能證明什麼
校驗碼用來偵測檔案是否被改動。它能找出下載中途中斷的情況、因網路不穩或硬碟故障而損壞的檔案,以及鏡像站提供的版本與原始版本不同的情況。這些錯誤相當常見,而雜湊值相符就能排除這些問題。
但校驗碼無法證明發布者值得信任。假設有攻擊者能同時更換下載頁面上的檔案,並修改旁邊顯示的雜湊值,兩者就會相符,檢查也會通過。校驗碼的可靠程度,取決於你取得雜湊值的來源。要讓檢查有意義,雜湊值應該與檔案透過不同管道取得,例如已簽署的釋出公告、附有 GPG 簽章的校驗碼檔案、套件管理工具的紀錄,或是你自己輸入網址進入的發布者官網。如果雜湊值是從同一個下載連結複製來的,面對刻意的攻擊者幾乎沒有防護作用。
雜湊值相符也無法說明程式的行為。它只能確認你拿到的是發布者計算雜湊時的那個檔案。檔案是否安全,是關於發布者的問題,要靠簽章、來源的信譽,以及專案本身的驗證步驟(如果有的話)來判斷。
發布者通常在哪裡列出雜湊值
先看下載按鈕附近。許多專案會把 SHA-256 數值印在下載頁面上。規模較大的專案常會另外發布一個檔案,通常命名為 SHA256SUMS 或類似名稱,每個下載檔各佔一行,有時旁邊還會附上簽章檔。部分軟體平台會把雜湊值放在自己的中介資料裡。說明文件(README)和釋出說明也是常見的位置。
也要留意演算法名稱。標示為 SHA-256 的值應為 64 個十六進位字元。32 個字元是 MD5,40 個字元是 SHA-1。工具需要知道你比對的是哪一種,你也一樣。
四個步驟比對雜湊值
- 從官方頁面下載一次檔案。
- 開啟 雜湊產生器,選擇檔案,再把檔案拖進去。等待計算完成。非常大的檔案可能需要一段時間,而且可能超過瀏覽器能放進記憶體的範圍。
- 把公布的雜湊值貼到預期雜湊值(選填)。大小寫和空白會被忽略,所以從網頁複製的大寫數值也能直接用。
- 查看是否相符。工具會顯示相符的演算法。如果都不相符,請不要執行該檔案,改為重新下載。若第二份檔案仍然失敗,代表公布的數值和你的檔案不一致,應該向發布者詢問哪一個才是正確的。
如果你偏好使用終端機,同樣的檢查只需一行指令。在 Linux 上,對檔案執行 sha256sum。在 macOS 上,shasum -a 256 的效果相同。在 Windows PowerShell 中,使用檔案路徑執行 Get-FileHash -Algorithm SHA256 即可取得數值。輸出的內容與工具顯示的十六進位字串相同。
雜湊值不只用來比對公布的數值。損毀檢查 運用的是同樣的概念,來判斷檔案是否已損壞;重複檔案 也是以相同方式找出重複,透過比對雜湊值,在資料夾中挑出完全相同的副本。
對文字計算雜湊值
文字模式會計算你輸入或貼上的內容的雜湊值。它會先把文字轉成 UTF-8 位元組。文字框會以 LF 儲存換行,因此貼上的文字,不論來自哪種系統,都會以 LF 換行計算。在 Windows 上儲存的檔案,每行通常以 CRLF 結尾,位元組不同,雜湊值也會不同。所以當發布者提供檔案的雜湊值時,請使用檔案模式,直接對檔案本身計算。如果你需要精確看出兩個版本的差異位置,比對文字差異工具 會並排顯示所有變更。
為何 MD5 和 SHA-1 不夠安全
工具提供 MD5 和 SHA-1,是因為許多舊的下載頁面仍然列出這兩種雜湊值。若只是要找出損毀,它們仍然足夠。意外的改動幾乎不可能剛好產生相同的 MD5 或 SHA-1 數值。
但面對攻擊者,它們就不夠可靠。碰撞是指兩個不同的輸入產生相同的雜湊值。現在已能低成本製造 MD5 碰撞,因此任何安全用途都不應依賴 MD5。SHA-1 的碰撞已於 2017 年公開示範,瀏覽器和憑證機構之後也已停止用 SHA-1 做簽章。如果發布者只提供 MD5 或 SHA-1,請要求 SHA-256 或已簽署的校驗碼檔案。凡是有人可能蓄意竄改檔案的情況,都應使用 SHA-256 或更強的演算法。截至撰寫本文時,沒有已知的實際攻擊能破解 SHA-256。演算法指南 說明了該如何選擇。
常見問題快速解答
雜湊值相符,檔案就安全嗎? 這只代表檔案就是被計算雜湊值的那一個。安全與否,取決於雜湊值是否來自你信任的來源。
兩個不同的檔案可能有相同的 SHA-256 嗎? 實際上不可能。截至撰寫本文時,尚未知道有任何實際方法能找出這樣的一對檔案。
複製之後,為什麼我的雜湊值不相符? 先檢查演算法是否正確。接著查看是否少了或多了一個字元,或複製的內容是否不完整。大小寫和空白會被忽略,所以它們不是原因。
借助 AI 協助,由英文原文翻譯而成。
留言
還沒有留言,搶先留言吧。


