HMAC署名生成(SHA-256/SHA-512)
メッセージと秘密鍵からHMAC署名を計算します。Webhookの署名検証やAPI認証のデバッグに使えます。ブラウザ内で処理され、鍵やメッセージがサーバーに送信されることはありません。鍵なしのハッシュは ハッシュ生成 をご利用ください。
🔒 ブラウザ内で完結・入力データはサーバーに送信されません
注意事項
- メッセージは改行や空白を含めて1バイトでも違うと別の署名になります。Webhookでは受信した生のボディをそのまま入力してください(JSONを整形し直さないこと)。
- HMAC-SHA1はHMACとしては現在も破られていませんが、新規に使うならSHA-256以上を選んでください。
- 本番の秘密鍵の入力は避け、検証用の鍵で試すことをおすすめします。入力内容は保存・送信されませんが、画面共有などにご注意ください。
用語解説
HMAC
秘密鍵とハッシュ関数を組み合わせて、メッセージの改ざん検知と送信元の確認を行う仕組みです。同じ鍵を持つ者だけが同じ署名を作れます。
Webhook署名
GitHubやStripeなどが通知の正当性を示すため、リクエストボディのHMACをヘッダーに付けて送る方式です。受信側で同じ鍵から計算し直して一致を確認します。
Base64URL
Base64の「+」「/」を「-」「_」に置き換え、末尾の「=」を省いた形式です。URLやJWTの署名部分で使われます。
よくある質問
Webhookの署名が一致しないのはなぜですか?
最も多い原因は、メッセージが受信した生のボディと1バイトでも違うことです。JSONの整形や改行コードの変換、末尾の改行の有無で結果が変わります。また、鍵が16進数かテキストか、署名がBase64か16進数かの取り違えにも注意してください。
鍵が空でも計算できますか?
はい。HMACの仕様上、空の鍵はブロック長ぶんのゼロで埋めた鍵と同じ扱いになるため、空のままでも計算できます。ただし実運用で空の鍵を使うべきではありません。
HMACとハッシュ(SHA-256)の違いは何ですか?
ハッシュは誰でも同じ値を計算できますが、HMACは秘密鍵を知っている人だけが正しい署名を作れます。そのため、改ざん検知だけでなく送信元の確認にも使えます。
MD5のHMACには対応していますか?
いいえ。ブラウザ標準の暗号機能(Web Crypto API)が対応するSHA-1・SHA-256・SHA-384・SHA-512のみ選べます。
このページをシェア
