HMAC(Hash-based Message Authentication Code,基於哈希的消息認證碼)是一種通過特定哈希函數(如 MD5, SHA1, SHA256),結合一個加密密鑰而形成的報文鑑權機制。
Hash(message + key),HMAC 採用了雙重哈希構造(內層與外層填充),能有效抵抗“長度擴展攻擊”。本工具支持多種主流哈希函數作爲底層實現,滿足不同場景的安全需求:
| 算法名稱 | 輸出長度 | 安全級別 | 建議場景 |
|---|---|---|---|
| HMAC-SHA256 | 256 位 (64字符) | 極高 | 現代 API 鑑權(如 AWS, 阿里雲 SDK) |
| HMAC-SHA1 | 160 位 (40字符) | 中等 | 舊版 OAuth 協議、Git 哈希校驗 |
| HMAC-MD5 | 128 位 (32字符) | 較低 | 對性能要求極高且安全性非首要的場景 |
| HMAC-SHA512 | 512 位 (128字符) | 最高 | 金融級安全及高度機密數據校驗 |
HMAC 的運算邏輯可以簡述爲以下步驟:
Q:HMAC 和普通的 SHA256 加密有什麼區別?
A: 普通 SHA256 只需要消息內容即可生成指紋;而 HMAC 必須提供一個密鑰 (Key)。即使消息完全相同,密鑰不同生成的 HMAC 值也完全不同。這常用於防止他人僞造消息。
Q:爲什麼我生成的 HMAC 值與服務器驗證的不匹配?
A: 請檢查以下三點:
Q:HMAC 是可逆的嗎?可以解密嗎?
A:不可逆。 HMAC 屬於單向散列函數。它只能用於“驗證”,即接收方用相同的算法和密鑰再算一遍,對比結果是否一致。
crypto、Python hmac 庫及 Java Mac 類庫的輸出結果。更多HMAC相關基礎知識: HMAC 基礎知識:理念、數學結構、安全性和應用場景