雜湊是什麼?
雜湊(Hash)會把任意長度的資料算成一串固定長度的「指紋」。同樣的輸入一定得到同樣的結果,只要改一個字元,結果就會完全不同,而且無法從結果反推出原文。常用來檢查檔案是否完整、比對資料是否被改過、產生快取的識別碼等。
如何使用
- 選擇演算法,或選「全部演算法」一次算出全部結果。
- 在左邊輸入內容。開啟「自動計算」時,停止輸入後會自動產生結果。
- 視需要調整「輸入編碼」與「輸出格式」,或啟用 HMAC 並輸入金鑰。
演算法比較
| 演算法 | 長度(Hex) | 適合用途 |
|---|---|---|
| MD5 | 32 字元 | 檔案校驗、快取 key;已不安全,不要用在安全相關用途 |
| SHA-1 | 40 字元 | 舊系統相容(例如 Git);已不建議用在安全相關用途 |
| SHA-256 | 64 字元 | 目前最常用,適合大多數用途 |
| SHA-384 / SHA-512 | 96 / 128 字元 | 需要更長結果的場合 |
HMAC 是什麼?
HMAC 是「加上金鑰的雜湊」,只有知道金鑰的人才能算出相同結果。很多服務用它來簽署 API 請求、驗證 Webhook 確實來自對方,例如付款平台、GitHub、LINE 都使用 HMAC-SHA256。啟用 HMAC 後輸入金鑰即可計算;金鑰可以是一般文字、Hex 或 Base64。
輸入編碼與輸出格式
- 輸入編碼:同一段文字用不同編碼,得到的位元組不同,雜湊結果也就不同。一般使用 UTF-8;輸入 Hex 或 Base64 時,代表要計算的是它們表示的原始位元組。
- 輸出格式:Hex(小寫或大寫)或 Base64。不少 API 簽章要求 Base64 格式。
範例
abc的 MD5:900150983cd24fb0d6963f7d28e17f72abc的 SHA-256:ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad- 金鑰
key、內容The quick brown fox jumps over the lazy dog的 HMAC-SHA256:f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8
檔案雜湊與比對
- 檔案雜湊:把檔案拖曳到輸入區,或按「選擇檔案」(最大 200 MB),會直接以檔案內容計算,常用於確認下載的檔案是否完整。
- 比對:把下載網站提供的雜湊值貼到「比對預期的雜湊值」,會顯示一致或不一致;Hex 不分大小寫。選「全部演算法」時,會告訴你是哪一個演算法一致。
常見問題
雜湊可以解密嗎?
不行。雜湊是單向運算,沒有「解密」這回事。網路上所謂的「MD5 解密」,其實是拿大量常見字串事先算好的結果來比對,所以簡單的密碼很容易被查出來。
為什麼和其他工具算出來的結果不同?
通常是輸入內容有些微差異:多了空白或換行、換行符號不同(Windows 的 CRLF 與 Unix 的 LF),或是文字編碼不同。請確認輸入完全相同,並使用相同的輸入編碼。
可以用 MD5 或 SHA-256 儲存使用者密碼嗎?
不建議。這些演算法算得很快,攻擊者也能快速大量嘗試。儲存密碼應使用專為密碼設計的 bcrypt、scrypt 或 Argon2。
HMAC 金鑰會被儲存嗎?
不會。計算在你的瀏覽器中完成;本站會記住你的輸入與設定,但 HMAC 金鑰刻意不記憶,重新整理後需要再輸入一次。