如何產生安全雜湊(MD5、SHA-1、SHA-256、SHA-512)
依用途選對雜湊演算法、一鍵驗證檔案完整性,並理解為何 MD5 當快取鍵可以、當密碼卻是災難。

為什麼重要
下載 4 GB ISO。「成功」下載完但你注意到 Wi-Fi 曾閃斷。有一個位元反轉了嗎?對檔案算 SHA-256 與公布摘要比對。相符則位元組級正確;否則重下。同樣邏輯用於內容定址儲存(Git 物件、IPFS)、備份去重,以及建置流程防竄改。
三個實際場景
檔案拖進雜湊工具,與專案 release 頁的 SHA-256 比對。
相信二進位無誤
將 canonical 請求字串 MD5 成固定長度快取鍵。
快取命中且不易碰撞
對扣押檔算 SHA-512 寫進案件日誌;日後任何修改都顯而易見。
保管鏈紀錄
操作說明
開啟 雜湊產生器。
選文字或檔輸入
文字:貼字串。檔案:從磁碟拖入。瀏覽器本機雜湊(受記憶體限制)。
選演算法
MD5(快、安全性已破)、SHA-1(deprecated)、SHA-256(現代預設)、SHA-512(較長摘要,常非必要)。
讀摘要
預設 hex。目的地要 Base64 可切換。
與已知摘要比對
預期值貼進比對欄;工具標示相符或不符。
複製並記錄
Digest 與檔案路徑、時間戳一併保存供日後驗證。
輸入
The quick brown fox jumps over the lazy dog摘要
MD5 : 9e107d9d372bb6826bd81d3542a419d6
SHA-1 : 2fd4e1c67a2d28fced849ee1bb76e7391b93eb12
SHA-256 : d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592
SHA-512 : 07e547d9586f6a73f73fbac0435ed76951218fb7d0c8d788a309d785436bbb64...
實用技巧
- 公布摘要請從 TLS 頁面複製,勿從論壇轉貼。否則中間人可能同時換檔與雜湊。
- 預設用 SHA-256。 現代 CPU 上快、支援廣,64 字元 hex 也好塞進 URL 與日誌。
- 密碼請用 bcrypt/scrypt/argon2,不要 SHA。 SHA 對密碼太快——慢的演算法反而是功能。
- 雜湊 canonical 形態。 JSON 請求要先正規化鍵順序(可先跑 文字格式化)快取鍵才穩。
常見陷阱
常見陷阱
兩檔 MD5 相同——該擔心嗎?
隨機檔碰撞仍算罕見。對手可能刻意造碰撞時 MD5 已破——改用 SHA-256。
常見陷阱
雜湊不同因尾端換行
用 hex 檢視或比長度。常見凶手是 \r\n vs \n。來源平台不同時先正規化行尾再雜湊。
常見陷阱
超大檔 SHA-512 讓分頁卡住
頁面用 Web Worker,但多 GB 檔仍可能拖慢。關其他分頁或用 CLI sha256sum。
何時不適合用這套
- 檔案加密——要加密演算法與金鑰,不是雜湊。
- 密碼儲存——用慢速 KDF(bcrypt/scrypt/argon2)加鹽。
- 帶金鑰的訊息摘要——與金鑰組合(HMAC)。見 如何計算 HMAC 簽章。
FAQ
MD5 與 SHA-1 完全不能用了嗎?
非安全場景(快取鍵、去重、ETag)仍可用。若對手可 crafted 輸入,請用 SHA-256 或更強。
為什麼 Windows 上檔案雜湊是大寫?
大小寫純展示。hex 比對應不分大小寫。
拖曳檔案會上傳嗎?
不會。瀏覽器以 File API 讀取位元組,經 WebCrypto SubtleCrypto.digest()。未送伺服器。