Tools mentioned in this article
Open the browser-based tool while you read and try the workflow immediately.
「無法還原為原始資料」的強大之處
在儲存密碼時,若直接將其放入資料庫是非常危險的。這時我們會用到 雜湊 (Hashing)。

雜湊是指「將輸入的資料轉換成一段絕對無法還原的複雜字串」。雖然這聽起來可能不太方便,但這種「單程票」的特性,正是保護我們數位生活的盾牌。
雜湊與 HMAC:看似相近卻不相同
在資訊安全的討論中常會出現這兩個術語,讓我們簡單整理一下:
1. 雜湊 (Hashing):採取資料的「指紋」
- 角色:確認資料是否「正確」。
- 特點:同樣的資料產生的雜湊值絕對相同,但無法從雜湊值推測出原始資料。
- 用途:密碼儲存(僅將雜湊值存入資料庫)、檔案竄改檢查。
2. HMAC:確認資料的「封印」
- 角色:確認資料是否「來自獲得授權的人」。
- 特點:在雜湊過程中結合了「密鑰 (Secret Key)」。
- 用途:API 請求驗證、Webhook 簽章。由於只有知道金鑰的人才能進行正確的運算,因此能防止冒充攻擊。
守護安全的智慧
技術日新月異,過去的「安全」在現今可能變得「力有未逮」。請記住目前的標準做法:
- 演算法的選擇:現在的標準是
SHA-256或SHA-512。過去主流的 MD5 或 SHA-1 已有被運算攻破的風險,因此在新系統中應避免使用。 - 鹽 (Salt) 的魔法:並非直接雜湊密碼,而是在運算前依據每位使用者加入不同的「香料(隨機字串)」。如此一向,即使多位使用者使用相同的密碼,產生的雜湊值也會截然不同,讓攻擊者更加頭痛。
實際操作,親身「體會」原理
「雜湊值長什麼樣子?」、「更改金鑰後 HMAC 會如何變動?」
歡迎使用本站的 雜湊與 HMAC 產生器 來滿足您的好奇心。
輸入資料,看著 SHA-256 長字串瞬間出現;輸入金鑰,見證 HMAC 產生劇變。透過親眼觀察這些變化,那些抽象的「安全」概念,將會化為您實實在在的知識。
常見問題
雜湊與加密有什麼不同?
差別在於能不能還原。加密只要有金鑰就能還原成原始資料,雜湊則是單向的,無法還原。密碼之所以用雜湊儲存就是這個原因。不過「無法還原」不等於「安全」:短密碼仍可透過暴力嘗試逐一雜湊比對而被猜中,因此還需要加鹽與速度較慢的雜湊函式。
bcrypt 的成本因子該怎麼選?
以在您實際使用的伺服器上,一次雜湊耗時約 100~250 毫秒為基準。數值每加 1,計算量就變成兩倍,所以請在實機測量後決定。硬體會越來越快,適當值也會隨之上升,因此不要設定一次就放著不管,建議每隔幾年重新檢視。
該用 SHA-256 還是 SHA-3?
一般的完整性驗證用 SHA-256 就足夠,目前並沒有已知的實用攻擊。SHA-3 是以不同內部結構準備的替代方案,並不是因為 SHA-256 變得危險才出現。不過無論哪一種,都不該用於儲存密碼,因為兩者都被設計得很快,反而有利於暴力破解。
密碼以外的機密資料也能用雜湊嗎?
視用途而定。若目的是「隱藏值本身,但仍要比對是否一致」,雜湊是有效的。但像電子郵件這類候選範圍有限的值,即使雜湊過也可能透過比對被反推出來。這種情況請加上鹽,或一開始就選擇加密。
結語
資訊安全是在看不見的地方默默守護我們的守護神。
了解雜湊與 HMAC 的原理,是與該守護神建立良好關係的第一步。不必想得太複雜,不如先從用工具「動手玩玩看」開始吧?