回饋

HMAC加密

📖 工具說明

1. 什麼是 HMAC 加密?

HMAC(Hash-based Message Authentication Code,基於哈希的消息認證碼)是一種通過特定哈希函數(如 MD5, SHA1, SHA256),結合一個加密密鑰而形成的報文鑑權機制。


2. 支持算法與配置參數

本工具支持多種主流哈希函數作爲底層實現,滿足不同場景的安全需求:

算法名稱 輸出長度 安全級別 建議場景
HMAC-SHA256 256 位 (64字符) 極高 現代 API 鑑權(如 AWS, 阿里雲 SDK)
HMAC-SHA1 160 位 (40字符) 中等 舊版 OAuth 協議、Git 哈希校驗
HMAC-MD5 128 位 (32字符) 較低 對性能要求極高且安全性非首要的場景
HMAC-SHA512 512 位 (128字符) 最高 金融級安全及高度機密數據校驗

3. HMAC 的工作原理 (Keyed-Hashing)

HMAC 的運算邏輯可以簡述爲以下步驟:

  1. 密鑰預處理: 如果密鑰過長,先進行哈希處理;如果過短,則填充至塊長度。
  2. 內層哈希: 將預處理後的密鑰與內層填充常量(ipad)異或,拼接明文消息後計算哈希。
  3. 外層哈希: 將密鑰與外層填充常量(opad)異或,拼接內層哈希結果,再次計算哈希。
  4. 輸出結果: 最終得到的固定長度字符串即爲 HMAC 簽名。

4. 常見問題解答 (FAQ)

Q:HMAC 和普通的 SHA256 加密有什麼區別?

A: 普通 SHA256 只需要消息內容即可生成指紋;而 HMAC 必須提供一個密鑰 (Key)。即使消息完全相同,密鑰不同生成的 HMAC 值也完全不同。這常用於防止他人僞造消息。

Q:爲什麼我生成的 HMAC 值與服務器驗證的不匹配?

A: 請檢查以下三點:

  1. 字符編碼:明文或密鑰是否包含中文?確保雙方均使用 UTF-8 編碼。
  2. 輸出格式:服務器要求的是 Hex(十六進制)還是 Base64?
  3. Key 的處理:某些系統對 Key 會先進行 Base64 解碼再參與計算,請確保輸入格式一致。

Q:HMAC 是可逆的嗎?可以解密嗎?

A:不可逆。 HMAC 屬於單向散列函數。它只能用於“驗證”,即接收方用相同的算法和密鑰再算一遍,對比結果是否一致。


5. 爲什麼選擇本站的 HMAC 工具?

更多HMAC相關基礎知識: HMAC 基礎知識:理念、數學結構、安全性和應用場景

📖 相關推薦