Toolonit
  1. ホーム
  2. 暗号化
  3. HMAC生成

HMAC生成・検証ツール

秘密鍵を使って、HMAC-SHA256などのHMAC署名を作成・検証します。

0バイト
鍵の形式
アルゴリズム
出力形式
HMAC-SHA-256秘密鍵を入力すると、HMACが表示されます。

省略可。GitHubのX-Hub-Signature-256ヘッダーの値(sha256=…)は、そのまま貼り付けられます。

HMACは、メッセージと共有の秘密鍵から作る署名です。鍵を持つ人なら誰でも同じ値を計算でき、メッセージや鍵が少しでも変わると値も変わります。Webhook(GitHub、Stripe、Slack)、署名付きのAPIリクエスト、JWTのHS256トークンなどで使われています。HMACは入力に合わせてすぐに更新され、署名を貼り付けて検証することもできます。計算はブラウザに組み込まれたWeb Cryptoで行われるため、メッセージも鍵も端末の外に出ることはありません。無料で登録も不要です。

HMACを生成・検証する方法

  1. 署名されたとおりにメッセージを貼り付けます。Webhookなら、リクエストボディをそのまま使います。
  2. 秘密鍵を入力するか、「生成」をクリックしてランダムな鍵を作ります。鍵をhexのバイト列で受け取った場合は「Hex」を選びます。
  3. アルゴリズム(特に指定がなければSHA-256)を選び、結果をhexかBase64でコピーします。
  4. 署名を検証するには、「署名を検証」に貼り付けます。GitHubのsha256=…というヘッダー値も、そのまま使えます。

主な機能

  • HMAC-SHA1・HMAC-SHA256・HMAC-SHA384・HMAC-SHA512
  • 秘密鍵はテキスト(UTF-8)かhexで指定、または「生成」でランダムな32バイトの鍵を作成
  • 結果はhexかBase64で、入力に合わせてすぐに更新
  • 受け取った署名をhexやBase64(URLセーフ形式も)で検証。GitHubのsha256=やSlackのv0=の接頭辞は付いたままでも可
  • 署名の長さが別のアルゴリズムのものならその旨を表示し、ボタンで切り替え可能
  • ブラウザに組み込まれたWeb Cryptoで計算

プライバシーは守られますか?

はい。HMACはブラウザに組み込まれたWeb Cryptoで計算されます。メッセージと秘密鍵はこのページの中だけにあり、アップロードや保存はされません。

よくある質問

GitHubのWebhook署名を検証するには?

リクエストボディをそのままメッセージに、Webhookのシークレットをテキストの鍵に、X-Hub-Signature-256ヘッダーの値を「署名を検証」に貼り付けます。GitHubはsha256=に続けてボディのHMAC-SHA256をhexで送ってくるので、接頭辞は付いたままで読み取れます。

JWTのHS256署名を確認するには?

トークンのヘッダーとペイロード(2つ目のドットより前のすべて)をメッセージに、シークレットを鍵に貼り付けてSHA-256を選び、トークンの3つ目の部分を「署名を検証」に貼り付けます。URLセーフなBase64もそのまま読み取れます。

署名が一致しないのはなぜですか?

メッセージは、署名されたものとバイト単位で完全に同じでなければなりません。JSONの整形し直し、末尾の改行の有無、Windowsの改行(CRLF)は、どれもHMACを変えてしまいます。ここで入力したテキストの改行はLFです。アルゴリズムと、鍵がテキストかhexかも確認してください。

OpenSSLと同じ結果になりますか?

はい。printf '%s' 'message' | openssl dgst -sha256 -hmac 'key' で同じhexの値が出力され、hexの鍵なら-mac HMAC -macopt hexkey:…と一致します。printfかecho -nを使ってください。ただのechoは改行を追加し、その改行も署名の対象になってしまいます。

HMAC-SHA1は今でも安全に使えますか?

HMACとしては、実用上は安全です。知られているSHA-1の衝突はHMAC-SHA1を破るものではなく、そのため古いWebhookでは今も使われています。新しく使うなら、HMAC-SHA256を選んでください。

関連ツール