雜湊計算

輸入文字或選一個檔案,五種摘要一次全出。

設定
摘要
MD5
SHA-1
SHA-256
SHA-384
SHA-512

這個雜湊工具能做什麼

雜湊函數把任意輸入——一句話、一個密碼、一個 4 GB 的磁碟映像——變成固定長度的指紋。輸入改動一個位元,指紋就完全不同,這使雜湊成為驗證檔案完整送達、不逐位元組比較就判斷兩份文件是否相同、以及不保存密碼本身就能儲存密碼的標準手段。本頁對你輸入的文字或選擇的任意檔案同時計算 MD5、SHA-1、SHA-256、SHA-384 與 SHA-512,以十六進位或 Base64 顯示結果。

SHA 系列執行在瀏覽器的 Web Crypto API 上,與 TLS 使用的是同一套實作,所以對大檔案也快而正確。瀏覽器不提供 MD5,因此內建了一份精簡的 RFC 1321 參考實作,已依標準測試向量核對。檔案在本機讀取,絕不上傳。

使用方法

輸入或貼上文字,五個雜湊隨之更新。按「檔案…」可對下載包、安裝程式或備份檔計算雜湊,檔名和位元組數顯示在輸入框下方。切換「大寫」或「Base64」以符合你的來源格式——Linux 的 sha256sum 輸出小寫十六進位,許多 API 和 Docker 映像摘要也用小寫十六進位,而 Content-MD5 標頭和 Subresource Integrity 屬性用 Base64。驗證下載時,把廠商頁面上的校驗和貼進「驗證」框:符合的那一列會變綠,狀態列告訴你是否一致,不區分大小寫和格式。

勾選「HMAC」並輸入金鑰即可計算帶金鑰的雜湊(HMAC-SHA256 等),Stripe、GitHub、Slack 的 Webhook 簽章、AWS Signature v4 以及許多 API 認證方案都是這樣建構的。這裡不為 MD5 提供 HMAC,因為任何現代系統都不該再用它。

該用哪種演算法

SHA-256 是 2026 年的預設選擇:所有語言的標準函式庫都有,輸出 64 個十六進位字元,沒有已知的實際攻擊。SHA-512 在 64 位元 CPU 上更快,用於需要更長摘要的場合。SHA-1 和 MD5 的抗碰撞性已被攻破——研究者在 2004 年就建構出 MD5 相同的兩個不同檔案,2017 年對 SHA-1 做到了同樣的事(SHAttered 攻擊)——所以它們絕不能用於簽章或憑證,但用於去重、快取鍵、以及對照同一網站公布的校驗和檢查下載,仍然沒問題。儲存密碼時,以上任何一種單獨使用都不合適:請用 bcrypt、scrypt 或 Argon2 這類刻意放慢的演算法。

背景:從 MD5 到 SHA-3

MD5 由 MIT 的 Ron Rivest 於 1991 年設計(RFC 1321),作為 MD4 更快的繼任者,成為 1990 年代網際網路的通用校驗和。SHA-1 由 NSA 於 1995 年發布(FIPS 180-1),輸出 160 位元。隨著對兩者的攻擊成熟,NIST 於 2001 年發布 SHA-2 家族——包括 SHA-256 和 SHA-512——並在公開競賽後於 2015 年選定 Keccak 作為結構完全不同的備選 SHA-3。瀏覽器透過 W3C 在 2017 年標準化的 Web Crypto API 提供了 SHA-1、SHA-256、SHA-384 與 SHA-512,這正是本頁這類工具無需伺服器就能實現的原因。

應用領域

對照下載頁公布的 SHA-256 驗證 ISO 映像、安裝包和韌體;Git 提交 ID(SHA-1,正在遷移到 SHA-256);Docker 與 OCI 映像摘要(sha256:…);套件管理器的 lock 檔和 HTML 裡的 Subresource Integrity;用 HMAC-SHA256 驗證 Webhook 簽章;CDN 的 ETag 和快取鍵;備份工具的檔案去重;比特幣的工作量證明(雙重 SHA-256);以及兩份大匯出檔的快速等值檢查。當簽章或摘要藏在 JWT 或 JSON 負載裡時,先解開容器,再到這裡驗證雜湊。

常見問題

我的檔案會被上傳嗎?

不會。檔案由瀏覽器讀取並用 Web Crypto API 在本機計算。中斷網路照樣能用。

為什麼我的雜湊和廠商的校驗和對不上?

最常見的原因是下載不完整或檔案版本不同,或者拿十六進位和 Base64 比較。「驗證」框兩種格式都接受且不區分大小寫;仍不一致就重新下載。

能從雜湊反推出原文嗎?

不能,雜湊是單向的。但很短或很常見的輸入可以被查表命中,這就是密碼絕不能以普通雜湊形式儲存的原因。

MD5 還能用嗎?

做校驗和、去重可以。任何安全相關用途——簽章、憑證、密碼儲存——不行;請用 SHA-256 或更強的演算法,密碼請用 Argon2 這類慢雜湊。

什麼是 HMAC?

雜湊與一個金鑰結合,只有持有金鑰的人才能產生或驗證。這是 API 為 Webhook 和請求簽章的標準方式。

關於這個工具的文章

部落格 →