Ad
DevToolXDevToolX

Hash 產生器

計算 MD5、SHA-1、SHA-256、SHA-512 雜湊值

關於 Hash 產生器

密碼學雜湊函式接受任意長度的輸入,產生固定長度的摘要(digest)。這個工具在瀏覽器端計算 MD5、SHA-1、SHA-256、SHA-512 等雜湊值,你的輸入內容完全不會上傳。常見用途包括比對檔案的完整性校驗碼、產生 HTTP ETag 快取標頭、以及為靜態資源建立內容雜湊做 cache-busting。需要特別注意的是:MD5 與 SHA-1 的碰撞防護已被破解,不應再用於密碼儲存或數位簽章。

常見使用情境

驗證檔案與 payload 完整性
下載檔案後計算其 SHA-256,再比對廠商公布的校驗碼,確認檔案在傳輸過程中沒有被損毀或篡改。
產生 HTTP ETag
把回應內容的雜湊值當作 ETag header。瀏覽器下次請求帶上 If-None-Match,如果雜湊相同就回傳 304 Not Modified,省下傳輸整個 payload。
靜態資源的 cache-busting
把 CSS 或 JS 檔案的內容雜湊加入檔名(如 main.a3f92b.js),內容不變就永久快取,內容一更動雜湊就不同,瀏覽器自動重新下載。
內容定址的識別碼
以內容的雜湊值作為儲存鍵,相同內容永遠對應同一個位址——Git 的物件儲存、IPFS 以及許多去重系統都是基於這個原理。

常見問題

可以用 MD5 或 SHA-1 儲存密碼嗎?

絕對不行,這點非常重要。MD5 和 SHA-1 的碰撞防護已被攻破,而且運算速度極快,攻擊者用 GPU 每秒可以嘗試數十億次。儲存密碼必須使用專為此設計的慢速雜湊演算法:bcrypt、scrypt 或 Argon2。無論有沒有加鹽,都不該用通用的雜湊函式處理密碼。

雜湊和加密有什麼差別?

雜湊是單向的:拿到摘要無法還原原始輸入(暴力破解除外)。加密是可逆的:用正確的金鑰可以解密回明文。完整性驗證、身份識別用雜湊;需要還原原始資料時才用加密。

為什麼要加鹽(salt)?怎麼加?

Salt 是在雜湊前附加給每個使用者的隨機值,確保兩個相同密碼產生不同的摘要,使彩虹表攻擊失效。bcrypt、Argon2 這類函式庫會自動處理 salt 的生成與儲存,不需要自己實作,也不要手動 hardcode salt。

什麼時候用 HMAC 而不是普通的雜湊?

當你需要同時驗證訊息的完整性和來源真實性,且雙方共享一個密鑰時。HMAC 把密鑰混入雜湊計算,沒有密鑰的攻擊者無法偽造合法的摘要。常見用途:API 請求簽章、webhook 驗證、cookie 完整性保護。

SHA-256 還是 SHA-3?

SHA-256(SHA-2 家族)是務實的選擇:支援廣泛、多數 CPU 有硬體加速、目前無已知弱點。SHA-3 採用不同的數學結構(Keccak 海綿函式),若 SHA-2 日後被攻破可作為備援,但在完整性驗證的日常使用上兩者都可以。

相關工具