SheepDev

雜湊、ID與隨機數

下載檔案與發布者的雜湊值一致嗎?

使用工具

下載完成且檔名正確,仍可能拿錯版本或遇到損毀。發布頁上的長串十六進位字元就是核對線索:摘要根據內容的位元組計算,而不是根據檔名或修改時間。但預期摘要來自哪裡,與比較本身一樣重要。

先用 abc 確認比較步驟

開啟 SHA 雜湊計算,輸入小寫 abc,不加末尾空格或換行,選擇 SHA-256 和十六進位。結果應與下方 64 字元一致。每個十六進位字元表示四個位元,因此 256 位元摘要總是 64 位十六進位數,與檔案大小無關。

abc 的 SHA-256
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad

換成 SHA-512 會計算另一種摘要;只換 Base64 輸出則是同一摘要位元組的不同表示。核對時既要一致的演算法,也要一致的表示格式,不能把 SHA-256 與 SHA-512 的差異當作下載失敗。

看起來相同卻不一致的原因

在 abc 後加一個 LF 換行,僅多一個位元組也會得到外觀完全不同的摘要。雜湊處理的是位元組,不理解文字含義。編輯器自動加末尾換行或複製時帶入空格都會影響結果;不能依據摘要相似程度判斷內容改動大小。

abc 後帶 LF 的 SHA-256
edeaaff3f1774ad2888673770c6d64097e391bc362d7d6fb34982ddf0efd18cb

編碼也會影響結果:相同文字的 UTF-8 與 UTF-16 位元組不同。本工具的文字輸入按 UTF-8 計算,檔案選擇則使用原始檔案位元組。先轉編碼或改換行就不再是在核對原下載檔案,應在開啟並另存之前選擇原檔案。

核對下載檔案的順序

先在官方發布頁確認版本、系統、CPU、檔名和摘要演算法,再選擇已儲存檔案計算,並核對完整摘要而非前幾位。ZIP 與解壓縮後的程式、不同平台、同名不同版本都有不同位元組,必須明確公布值對應哪個檔案。

不一致時先複核目標和演算法,隨後才考慮下載不完整或內容變化。摘要本身不能定位原因,不應透過執行檔案來試驗。超過工具限制時改用合適的本機工具,不要截取片段後當作原檔案摘要。

一致不等於確認發布者

檔案與摘要都來自同一可疑頁面時,完全一致也不能確認發布者:修改內容的人也能重新計算摘要。核對的價值在於用可信管道得到的預期值比較手中檔案,與確認官方 HTTPS 網站或數位簽章的作用不同。

一致也不意味著程式安全,正式版本仍可能有漏洞;不一致也不必然是攻擊,版本或換行不同就會產生差異。把結果理解為內容核對,不要直接跳到安全判斷或原因結論。

區分雜湊、CRC 與加密

CRC32 可以檢查資料變化,但不是為了抵抗攻擊者蓄意修改。發布方給出 SHA-256 時不要換成 CRC32。摘要不是可還原的加密,直接使用 SHA-256 也不等於合理的密碼儲存設計,那與檔案核對是不同問題。

要能複核,可記錄檔名與版本、演算法、預期值來源及比較結果,無需分享機密內容。計算在瀏覽器內進行,但共用裝置與剪貼簿仍需謹慎。有效的結論應包含比較對象、可信參考及採用演算法。

用來比較的摘要來自哪裡?

檔案與同處下載的摘要一致,只證明位元組對應那個值。若兩者都被替換,一致不證明安全。比較運算與信任預期值是兩回事;官方要求簽章驗證時,不能用雜湊替代並稱等效。工具不認證來源或簽署者。

先統一演算法和輸出格式,同一 SHA-256 的十六進位與 Base64 文字不同。把檔案貼入文字欄可能改變編碼或換行,檔案核對應使用原始檔案輸入。摘要與檔名等格式分開,比較完整值而非短前綴。

不一致可能是版本、下載不完整、壓縮前後或換行變化,不自動證明攻擊,也不能不明原因就當差不多繼續使用。記錄版本、檔名、位元組數、演算法和兩個摘要。雜湊發現差異,但不診斷原因。

參考資料

使用工具

指南 →