HMAC 生成器

HMAC 生成器

使用 HMAC 簽署並驗證訊息。在你的瀏覽器中計算七種演算法 — 資料不會離開此頁面。

輸入訊息和金鑰以開始。七個 HMAC 值將即時顯示在此處。

演算法

範例

點擊預設以載入已知訊息和金鑰。

關於 HMAC 生成器

HMAC(基於雜湊的訊息認證碼)是 webhook 簽章驗證的主力。給它一個訊息和一個金鑰,它會產生一個有鍵摘要,接收方用相同的金鑰可以驗證。 此工具在你的瀏覽器中運行七種 HMAC 變體 — 不會向任何伺服器發送資料 — 並為你提供每行的「複製為 curl header」和「複製為 Python 片段」操作, 以便你可以將結果直接放入 shell 工作階段或驗證腳本中。

七種演算法

  • HMAC-MD5 — 舊版(Stripe v1 webhooks、RADIUS、一些內部通訊協定)。僅出於相容性而包含;不要用於新設計。
  • HMAC-SHA-1 — 在舊版 webhook 提供商和 AWS v2 簽章中仍然常見。
  • HMAC-SHA-256 — 主力。Stripe v2、GitHub、Slack、Shopify 以及 JWT HS256 的預設都使用它。
  • HMAC-SHA-512 — 一些銀行和高安全性 API 使用它。
  • HMAC-SHA3-256HMAC-SHA3-512 — NIST FIPS 202 SHA-3 系列,在更新的規範和 IoT 簽章通訊協定中越來越多地被使用。
  • HMAC-RIPEMD-160 — 用於比特幣地址衍生和少數歐洲銀行通訊協定。

以常數時間驗證簽章

工具的驗證部分貼上傳入的簽章(帶有提供商特定的前綴解析 — 見下文),並使用逐位元組 XOR 累加器將其與新計算的值進行比較, 該累加器的執行時間與輸入長度成正比,而不是與第一個不同位元組的位置成正比。當遠端攻擊者可以對你的驗證路徑計時,這是正確的比較形式。 關閉常數時間模式以查看差異(匹配值相同,但警告出現,作為提醒不要在生產中使用它)。

提供商前綴解析

實際的傳入簽章被包裝在提供商特定的前綴中:GitHub 使用 sha256=<hex>,Slack 使用 v0=<hex>,Stripe 使用複合的 t=<ts>,v1=<hex>,v0=<hex>。 工具自動偵測這些前綴,去除它們,並顯示一個可見的註解,描述被去除的內容。切換 按字面值處理輸入以停用解析和標準化(對於測試解析器本身或具有非標準格式的提供商很有用)。

複製為 curl header 或 Python 驗證程式

每行的複製為 curl header操作生成一個可貼上的 curl -H 'Header: <hex>' 行;複製為 Python 操作生成使用標準函式庫 hmac 模組的程式碼片段,該片段始終以 hmac.compare_digest(標準函式庫的常數時間比較)結尾。 Python 程式碼片段忠實地反映活動的金鑰編碼:hex 金鑰使用 bytes.fromhex,base64 金鑰使用 base64.b64decode,UTF-8 金鑰使用 b'…' 字面值。

內建的 webhook 提供商預設

  • RFC 2202 / RFC 4231 參考向量("Jefe" / "what do ya want for nothing?" 的 HMAC-SHA-1 和 HMAC-SHA-256)。
  • Stripe v2 webhook(hex 編碼的 whsec_ 金鑰,複合的 t=<ts>.<body> 訊息)。
  • GitHub webhook(UTF-8 金鑰,JSON body,sha256= 前綴)。
  • Slack 請求簽章(UTF-8 金鑰,v0:<ts>:<body> 訊息)。
  • JWT HS256 簽章(base64 編碼的金鑰,header.payload 訊息,base64url 簽章)。

點擊預設以載入訊息、金鑰、期望簽章、curl 標頭名稱和前綴解析器 — 對應的行將顯示相符, 以便你在信任你自己的資料之前確認工具實作正確。

常見用途

  • 驗證傳入的 webhook 簽章(Stripe、GitHub、Slack、自訂)。
  • 在腳本或終端中重新產生簽章以與上游服務進行比較。
  • 在編寫驗證程式碼時為新的 webhook 整合產生期望簽章。
  • 透過比較相同訊息和金鑰來學習 HMAC-SHA-256 和 HMAC-SHA3-256 之間的區別。
  • 根據已發佈的測試向量稽核第三方函式庫的 HMAC 實作。

安全說明

所有計算都在瀏覽器中執行。任何訊息、金鑰或計算的 HMAC 都不會發送到任何伺服器。清空全部 按鈕一鍵清除訊息、金鑰和期望簽章欄位 — 但它不會在分頁隱藏、導覽或任何其他自動觸發時自動清除, 所以你的工作流程(貼上金鑰,切換到終端,貼上 curl,切換回來,調整)可以繼續工作。

留言

請接受「功能性」Cookie 類別以查看和發表留言。