🔐 HMAC 生成器

專業的 HMAC 簽名生成與驗證工具,支援 HMAC-SHA1/SHA256/SHA512 演算法,適用於 API 簽名和數據完整性驗證

📝 輸入訊息

🔧 選擇演算法

HMAC-SHA1
160 位元,較舊的演算法
HMAC-SHA256
256 位元,推薦使用
HMAC-SHA512
512 位元,最高安全性
輸出格式:

✅ HMAC 簽名結果

簽名值:
演算法: | 格式:

🔍 驗證 HMAC 簽名

📚 常用範例

🔹 簡單範例
訊息:Hello World
金鑰:secret
🔹 API 請求簽名
模擬 API 請求的 HMAC 簽名
🔹 帶時間戳簽名
包含當前時間戳的簽名

🔐 多種演算法

支援 HMAC-SHA1、HMAC-SHA256、HMAC-SHA512 等主流演算法,滿足不同安全需求。

🎯 API 簽名

專為 API 請求簽名設計,支援常見的 HMAC 簽名場景,確保 API 通訊安全。

🔒 隱私保護

所有運算都在瀏覽器本地完成,訊息和金鑰不會上傳到伺服器,完全保護隱私。

📖 使用教學

什麼是 HMAC?

HMAC(Hash-based Message Authentication Code,基於雜湊的訊息認證碼)是一種使用密碼雜湊函數的訊息認證碼。它結合了密鑰和訊息內容,生成一個固定長度的簽名值,用於驗證訊息的完整性和真實性。

HMAC 的主要特性

使用步驟

  1. 選擇輸入方式:文字輸入或檔案上傳
  2. 輸入要簽名的訊息內容
  3. 輸入 Secret 金鑰
  4. 選擇 HMAC 演算法(推薦 HMAC-SHA256)
  5. 選擇輸出格式(Hex 或 Base64)
  6. 點擊「生成 HMAC 簽名」按鈕
  7. 複製生成的簽名值使用

API 簽名應用場景

HMAC 廣泛應用於 API 請求簽名:

演算法選擇建議

安全最佳實踐

HMAC vs 其他簽名方式

方式 優點 缺點
HMAC 速度快、實作簡單、對稱加密 需要共享金鑰、金鑰管理複雜
RSA 簽名 非對稱加密、公鑰可公開 速度較慢、實作較複雜
JWT 包含 Payload、自包含 Token 較大、無法撤銷

❓ 常見問題

Q: HMAC 和 Hash 有什麼區別?

A: Hash(如 MD5、SHA256)只對訊息進行雜湊,任何人都可以計算。HMAC 則需要密鑰,只有擁有密鑰的人才能生成有效的 HMAC,因此可以驗證訊息的真實性和完整性。

Q: 輸入的訊息和金鑰會被上傳嗎?

A: 不會。所有 HMAC 運算都在您的瀏覽器本地完成,訊息和金鑰不會傳送到任何伺服器,完全保護您的隱私和安全。

Q: Hex 和 Base64 格式有什麼區別?

A: Hex(十六進位)使用 0-9 和 a-f 字符,長度較長但易讀。Base64 使用 A-Z、a-z、0-9、+、/ 字符,長度較短但包含特殊符號。選擇取決於您的應用需求。

Q: 如何選擇合適的 HMAC 演算法?

A: 對於大多數應用,推薦使用 HMAC-SHA256,它提供了安全性和效能的良好平衡。如果需要更高安全性,可選擇 HMAC-SHA512。避免使用 HMAC-SHA1,除非需要與舊系統相容。

Q: HMAC 金鑰應該多長?

A: 建議 HMAC 金鑰長度至少與雜湊函數的輸出長度相同:SHA256 至少 256 位元(32 字節),SHA512 至少 512 位元(64 字節)。使用隨機生成的金鑰以確保安全性。

Q: 如何在 API 中使用 HMAC 簽名?

A: 典型流程:1) 將請求參數按規則排序並拼接;2) 加入時間戳;3) 使用 HMAC 生成簽名;4) 將簽名添加到請求標頭或參數中;5) 服務器端使用相同方法驗證簽名。

Q: HMAC 可以防止重放攻擊嗎?

A: HMAC 本身不能防止重放攻擊。建議在簽名內容中加入時間戳或 nonce(隨機數),服務器端檢查時間戳是否在有效範圍內,或記錄已使用的 nonce 來防止重放攻擊。

✨ HMAC 生成器採用業界標準算法,完全客戶端運算保護隱私。 需要更多安全工具?查看 哈希生成器JWT 解析器密碼生成器