什麼是HMAC 產生器?
HMAC 產生器使用密鑰和雜湊演算法(如 SHA-256、SHA-512 等)建立基於密鑰的雜湊訊息鑑別碼。HMAC 可同時驗證資料完整性和來源真實性,常用於 API 身份驗證、Webhook 簽章及 JWT 令牌。
HMAC 把密鑰混進雜湊裡,只有掌握該密鑰的人才能驗證簽章。工具支援 SHA-1、SHA-256、SHA-384、SHA-512,輸出可選十六進位、Base64、Base64URL 或原始二進位,並為 GitHub、Stripe、Slack、Shopify 的 Webhook 提供一鍵預設,自動填好演算法與標頭前綴。訊息既可直接輸入純文字,也可貼上已編碼為十六進位、Base64 或 Base64URL 的內容——簽章前會先解碼為原始位元組。即時位元組計數會標出短於生產安全標準 32 位元組的密鑰,輸入時簽章會即時重新計算,驗證欄位也能容忍這些平台送出的 sha256= 或 v0= 前綴。訊息和密鑰都在你的裝置上處理。
使用方法
- 步驟一 — 輸入您的訊息內容和密鑰。
- 步驟二 — 選擇 Webhook 預設(GitHub、Stripe、Slack、Shopify),或自行設定雜湊演算法(SHA-1、SHA-256、SHA-384 或 SHA-512)及輸出編碼(十六進位、Base64、Base64URL 或二進位)。若要傳入已編碼的酬載,把訊息輸入格式切換為十六進位或 Base64 即可。
- 步驟三 — 複製產生的 HMAC 簽章,用於 API 請求標頭或 Webhook 驗證。
何時使用
- 為 Webhook 負載簽章,讓接收方能確認來源是你而且內容沒被動過。
- 為 AWS Signature Version 4 或類似 API 認證機制產生請求簽章。
- 用 HS256、HS384、HS512 演算法產生 JWT 簽章。
結果
您的金流 API 要求對請求進行 HMAC-SHA256 簽署。將請求主體作為訊息、API 密鑰作為密鑰輸入,複製產生的簽章填入 X-Signature 請求標頭中。
常見問題
- HMAC 跟直接對 message+key 做一次 SHA-256 有什麼差別?
- HMAC 採用特定的雙重雜湊結構,內外兩次都用經過填補的密鑰。這能擋住針對 SHA-1、SHA-256 等演算法的長度延伸攻擊,而簡單的 hash(key‖message) 寫法擋不住。
- 輸出該選 hex 還是 Base64?
- 看 API 或 Webhook 提供方要求。HTTP 標頭中常見的是 hex(Stripe、GitHub),JSON 內容與 JWT 常見的是 Base64。同一個簽章可以用兩種編碼表示,只是寫法不同。
- 密鑰應該多長?
- 建議至少 32 位元組(256 位元)的隨機資料,最好取自密碼學隨機源。太短會削弱安全性;超過雜湊區塊大小(SHA-256 為 64 位元組)也無意義,HMAC 內部會先把它壓縮。
- 為什麼我算出的簽章和 API 給的不一致?
- 通常是被簽署的內容不一致。空白、換行字元、查詢字串順序、URL 編碼、是否包含時間戳都會影響結果。請仔細依照提供方的簽章規則一字不差地重現。
- HMAC-SHA1 還安全嗎?
- 新系統建議直接採用 HMAC-SHA256 或更強的版本。HMAC-SHA1 在結構上仍然安全(HMAC 不依賴抗碰撞性),但長期上整體淘汰 SHA-1 是比較穩妥的預設方向。