SHA-256 會將 Windows 檔案的精確位元組轉換成一個固定的 64 字元十六進位字串,而 SHA256 雜湊產生器 完全在您的瀏覽器分頁內計算該摘要,完全不會將檔案傳送到任何地方。當您將工具指向 Windows 磁碟上的任何文件、安裝檔、封存檔或 ISO 時,它會讀取原始位元組,將它們交給瀏覽器中依據 NIST FIPS 180-4 規範所實作的標準 SHA-256 引擎,並回傳規範化的 256 位元摘要,同時以 64 個小寫十六進位字元和帶填補的 Base64 表示。輸出具決定性:同一個檔案永遠會產生相同的雜湊值,而檔案中一個位元組的變更,大約會翻轉結果中一半的字元。正是這個特性,讓摘要適合用來確認下載的安裝檔沒有損壞或被調包、確認同一工作區檔案的兩份複本會產生相符的摘要,以及確認建置流程所產生的成品,符合發行清單中所記錄的值。

在 Windows 上,檔案的 SHA-256 究竟代表什麼
SHA-256 摘要是從輸入的精確位元組序列所衍生出的一個 256 位元值。對檔案來說,每一個位元組都算數:文件標頭、內嵌中繼資料、行尾字元,甚至是結尾的空位元組,全部都會被納入雜湊計算。一個 4 GB 的安裝檔和一個 1 KB 的文字檔,都會產生 32 位元組的摘要;輸入的大小並不會改變輸出的大小。本工具所使用的瀏覽器 SHA-256 引擎,會將檔案位元組切分為 512 位元的區塊,把每個區塊展開成 64 字的排程,並更新八個 32 位元的工作變數,直到輸出最終構成結果的八個字,完全依照 NIST FIPS 180-4 所描述的方式進行。
正是這種決定性,讓 SHA-256 值能作為完整性收據。若您所計算出的 64 字元十六進位字串與經認證的參考值相符,該檔案的位元組就對應到那個參考值。若檔案中任何位置即使只有一個位元組不同,所產生的摘要就會以看似不可預測的方式改變。這種雪崩效應,正是為什麼摘要比對能夠抓到因下載中斷所造成的意外損毀,以及攻擊者企圖以惡意替換品通過校驗和檢查時所進行的蓄意篡改。
瀏覽器工具如何安全地讀取您的檔案
這個產生器完全在 Windows 機器的目前瀏覽器分頁中運作。當您從任何資料夾選擇檔案時,頁面會透過瀏覽器的本機檔案 API 讀取位元組,並將緩衝區交給標準的 Web Cryptography 摘要作業。資料不會被上傳,因此檔案永遠不會離開本機,無論 Windows 工作站是透過公司代理伺服器路由、位於旅館網路,或是執行在已啟用封包擷取的虛擬機器中,這一點都很重要。
在 Windows 上有兩個實際的限制。第一,由於瀏覽器的摘要作業接收的是完整的位元組緩衝區,而不是以區塊串流方式處理,因此檔案上限為 100 MB;對於更大的檔案,頁面會建議改用本機串流工具。第二,頁面將輸入視為原始位元組而非文字:任何內嵌的中繼資料、ZIP 標頭、EXE 資源、BOM 標記,或是「歸位字元 + 換行字元」組合,都會以磁碟上呈現的樣子精確地進行雜湊。這通常正是您想要的,因為目標是要符合廠方在他們那端所雜湊的位元組序列。
為 Windows 檔案產生 SHA-256 雜湊
- 在 Windows 上以任何現代瀏覽器開啟 SHA256 雜湊產生器,然後在頁面上選擇檔案輸入選項,而不是文字模式。
- 點擊檔案選擇器,並導覽至您想要建立指紋的文件、安裝檔、ISO 或封存檔;該工具會透過本機檔案 API 讀取位元組,而不是透過任何伺服器。
- 確認頁面顯示了檔案名稱與精確的位元組數,讓您在產生摘要之前知道您即將雜湊的是哪個成品。
- 產生摘要;結果會以 64 個小寫十六進位字元,以及代表同樣 32 位元組的 44 字元帶填補 Base64 字串呈現。
- 複製下游系統所預期的表示法:廠商下載頁面與大多數 README 檔使用小寫十六進位,JSON 清單與 API 回應則使用 Base64。
- 逐字元比對整個輸出與經認證的參考值,不要捨棄前導零,也不要略過最後一個字元。
空位元組序列也有一個標準的 SHA-256 摘要,其開頭為 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855,在您第一次執行此工具時可作為健全性檢查:對「空」進行雜湊,每次都應該產生那個精確的 64 字元字串。若您的 Windows 檔案雜湊與廠商所發布的值即使只有一個字元不同,請將該檔案視為已遭破壞,並從官方來源重新下載,而不是重試同一個鏡像站。該工具也會記錄一個非同步的工作識別碼,因此對大檔案進行緩慢讀取時,不會不小心用較舊的摘要取代較新的選取。
將 Windows 下載檔案與已發布的校驗和進行比對
為檔案計算雜湊的目的很少只是出於好奇;幾乎都是為了回答「這個位元組序列是否正是發布者所預期的?」這個問題。要回答這個問題,您需要一個您所信任的參考雜湊值,而那份信任的強度,完全取決於參考值的來源。
| 參考來源 | 信任等級 | 應比對的對象 |
|---|---|---|
| 由發布者所簽署的發行清單 | 最強 | 已簽署清單內部的十六進位字串,並以發布者的公開金鑰加以驗證 |
| 廠商具有有效憑證的 HTTPS 下載頁面 | 強 | 印在下載按鈕旁的十六進位字串 |
| 同一個已認證套件內部的 README 或發行說明 | 中等 | 貼入說明文件中的十六進位字串 |
| 第三方鏡像站、論壇或社群貼文 | 弱 | 任何貼上的值,容易偽造且難以察覺 |
當您使用瀏覽器工具為 Windows 安裝檔計算雜湊時,請將廠商所發布的十六進位字串貼到工具結果旁的記事本中,並比對整個 64 字元的序列。在任何文字編輯器中使用並排差異比對即可;重要的是比對必須涵蓋每一個字元,並使用相同的演算法名稱。請將演算法標籤與任何儲存的摘要一併記錄,如此一來,64 字元的 SHA-256 值日後就不會與 64 字元的 SHA-512 指紋或其他不相關的校驗和格式混淆。如需更深入的瀏覽器內工作流程說明,請參閱 在瀏覽器中為檔案產生 SHA 256 雜湊。
當 SHA-256 檔案摘要不足之時
SHA-256 是單向雜湊,而非加密。256 位元的摘要在數學上不可能反推回原始檔案,而且該作業不使用金鑰,因此任何持有相同檔案的人都能計算出相同的摘要。這個特性用於完整性檢查是沒問題的,但這也意味著 SHA-256 本身並無法證明是誰建立了檔案。若您需要同時確認 Windows 成品是否完整,以及它是否來自特定發布者,請在摘要之上再加上簽章檢查:以發布者的公開金鑰驗證分離式簽章,接著再驗證已簽署內容的 SHA-256。
SHA-256 也不是密碼雜湊。它的速度非常適合用於驗證大型下載,但同樣的速度也讓攻擊者每秒能測試數十億組密碼猜測。需要儲存密碼的帳號系統,應為每位使用者加入唯一的鹽,並將密碼通過一個具備校準過記憶體與時間成本、為此目的而設計的函式,而不是直接使用原始的 SHA-256。若要在兩個系統之間進行共用秘密的訊息鑑別,可對精確的 UTF-8 或檔案位元組使用 HMAC-SHA-256,同時提供完整性與來源驗證;若目標是公開金鑰鑑別,則應改用真正的數位簽章機制。
最後,請記住,相符的摘要只有在預期值為真實時才有意義。若攻擊者能同時替換檔案以及檔案旁顯示的校驗和,重新計算 SHA-256 將會確認攻擊者的那一對,而比對將會錯誤地通過。瀏覽器工具會給您一個正確且具決定性的摘要;但信任仍然來自於遞送參考雜湊值的那個管道。
相關閱讀:以正確的方式產生 SHA-512 密碼雜湊。