logo
GeekFormat

HMAC生成と検証

橋アルゴリズム

推奨キーの長さは、ハッシュ出力の長さに対応しています。SHA-1=20バイト、SHA-256=32バイト、SHA-384=48バイト、SHA-512=64バイト

メッセージ内容0 文字
HMACシグネチャー(Hex)
入力待ち...

説明

  • HMAC は、ソースと整合性の認証のためのキーと橋アルゴリズムに基づいて署名を生成します
  • サポート SHA-1/SHA-256/SHA-384/SHA-512
  • データをアップロードすることなく、ブラウザ内でローカルで生成および検証
  • バリデーションは、時間シリーズの差を削減するためにバイトによって固定長さを使用します

HMAC署名をオンライン無料で生成・検証。一般的なSHAシリーズアルゴリズムをサポート。インターフェース署名・Webhook検証・セキュリティ連携に最適。

関連おすすめ

ユースケース

  • Stripe Webhook 開発:決済コールバックをデバッグし、`Stripe-Signature` ヘッダーが正しいか確認します
  • GitHub Webhook 連携:Push や Pull Request イベントの `X-Hub-Signature-256` を検証します
  • Shopify 注文同期:注文更新 Webhook の `X-Shopify-Hmac-Sha256` 署名を確認します
  • Slack Bot 署名確認:Slack イベントコールバックの `X-Slack-Signature` を検証します
  • JWT 開発デバッグ:HS256 で JWT に署名し、トークンの妥当性を確認します
  • API リクエスト署名:AWS Signature V4 や独自 API 署名方式の実装・検証に使えます

特徴

  • 複数アルゴリズム対応:HMAC-SHA256/384/512、SHA1、MD5 に対応し、現代的な API から古い連携まで確認できます
  • Webhook 署名検証:Stripe、GitHub、Shopify、Slack の代表的な署名形式を自動解析して確認できます
  • 3つの出力形式:Hex / Base64 / Base64URL を切り替え、API やプラットフォーム側の要求に合わせられます
  • リアルタイム生成:入力変更後すぐに計算されるため、毎回ボタンを押さずに差分を確認できます
  • 署名検証モード:期待される署名を貼り付けるだけで、一致/不一致をその場で確認できます
  • キー長チェック:短すぎるキーを検知し、実運用で危険な設定に気づきやすくします
  • ブラウザ内処理:Web Crypto API でローカル計算し、キーやメッセージはサーバーへ送信されません
  • JWT 対応:HMAC-SHA256 の結果は、HS256 署名の理解や検証にもそのまま役立ちます

使い方

  1. アルゴリズムを選ぶ:通常は現代的な API で広く使われる HMAC-SHA256 を選びます
  2. メッセージを入力する:Webhook の生ボディや API リクエスト文字列を貼り付けます
  3. キーを入力する:Webhook Secret や API Secret を入力します
  4. 形式を選ぶ:Stripe なら Hex、JWT なら Base64URL など、相手側の仕様に合わせます
  5. 署名を検証する:検証モードに切り替え、期待される署名を貼り付けて一致するか確認します

よくある質問

HMAC と普通のハッシュは何が違いますか?

SHA256 のような通常のハッシュは、メッセージそのものからダイジェストを作るだけなので、誰でも同じ値を計算できます。HMAC はそこに秘密鍵を組み込み、キーを持つ相手だけが正しい署名を作成・検証できるようにします。そのため、通常のハッシュが主に完全性を確認するのに対し、HMAC は完全性と送信元の正当性の両方を確認できます。

Stripe、GitHub、Shopify の Webhook 署名はどう検証しますか?

サービスごとに形式が違います。Stripe は `Stripe-Signature` ヘッダーで `t=timestamp,v1=hex_signature` を使い、`timestamp.payload` を署名します。GitHub は `X-Hub-Signature-256` に `sha256=hex_signature` を入れます。Shopify は `X-Shopify-Hmac-Sha256` に Base64 形式の値を入れます。このツールでは、こうした代表的な形式をそのまま検証できます。

Hex、Base64、Base64URL の違いは何ですか?

Hex は 0-9 と A-F で表す16進形式で、目視確認やデバッグに向いています。Base64 はよりコンパクトで、JSON などに埋め込みやすい形式です。Base64URL は URL で扱いにくい `+` と `/` を `-` と `_` に置き換える形式で、JWT や URL パラメータでよく使われます。

どの HMAC アルゴリズムを使うべきですか?

**通常は HMAC-SHA256 を選ぶのがおすすめです**。Stripe、GitHub、Shopify、Slack などの API/Webhook で広く使われ、32バイト出力で互換性も高い現代的な標準です。SHA-512 はより長い出力が必要な場合に、SHA1 は古いシステム向けに、MD5 は非常に古い API との互換目的に限定して使ってください。

キー長はどれくらい必要ですか?

キーは長く、ランダムであるほど安全です。最低でも16文字(128ビット相当)、実運用では32文字以上を推奨します。このツールはキーが短すぎる場合に警告します。単純なパスワードや推測しやすい文字列ではなく、暗号学的に安全な乱数で生成したキーを使ってください。

署名検証が不一致になるのはなぜですか?

よくある原因は、メッセージに余分な空白や改行が入っている、Stripe のように `timestamp.payload` を署名しているのに本文だけを比較している、GitHub の `sha256=` のような接頭辞を含めたまま比較している、双方でアルゴリズムが違う、などです。署名対象、キー、アルゴリズム、出力形式を完全にそろえてください。

HMAC は JWT 署名にも使えますか?

はい。JWT の HS256 は HMAC-SHA256、HS512 は HMAC-SHA512 です。JWT では Header と Payload を Base64URL エンコードし、それらを HMAC で署名します。このツールの HMAC-SHA256 出力は、HS256 の仕組みを理解したり、署名の差分を確認したりするのに役立ちます。

このオンライン HMAC ツールは安全ですか?

計算はすべてブラウザ内の Web Crypto API で行われ、キーやメッセージはサーバーへ送信されません。DevTools の Network パネルを開けば、外部リクエストがないことを確認できます。開発や検証には適していますが、本番の極めて重要なキーはオフラインの管理された環境で扱うのが安全です。

HMAC 署名は偽造できますか?

十分に長くランダムなキーを使い、現代的なハッシュアルゴリズムを選んでいる限り、有効な HMAC 署名を現実的に偽造する方法は知られていません。安全性はキーの秘匿性に強く依存するため、キーの漏えい防止と定期的なローテーションが重要です。

HMAC生成と検証とは?

HMAC(Hash-based Message Authentication Code)は、RFC 2104 で定義されたメッセージ認証の仕組みです。メッセージと秘密鍵を一緒にハッシュ関数へ通し、固定長の署名を生成します。通常のハッシュと違い、HMAC はキーを知っている相手だけが正しい署名を生成・検証できるため、メッセージの改ざん検知だけでなく「その送信元が本当にキーを持っているか」も確認できます。

**HMAC は現代的な API セキュリティの土台です**。Stripe、GitHub、Shopify、Slack、Twilio は Webhook イベントに HMAC-SHA256 署名を付け、リクエストが本当にそのサービスから来たかを確認します。AWS Signature V4 も HMAC-SHA256 を使います。JWT の HS256 も本質的には HMAC-SHA256 です。API 署名を理解するなら、まず HMAC を押さえるのが近道です。

**プラットフォームごとに署名形式は違います**。Stripe は `Stripe-Signature` ヘッダーで `t=timestamp,v1=hex_signature` 形式を使い、`timestamp.payload` を署名します。GitHub は `X-Hub-Signature-256` に `sha256=hex_signature` を入れます。Shopify は `X-Shopify-Hmac-Sha256` に Base64 形式の値を入れます。このツールは、こうしたよく使われる形式の解析と検証を支援します。

**署名検証が失敗する理由**で最も多いのは、署名対象の文字列が違うことです。生の本文ではなく `timestamp.payload` を署名している、末尾に改行が入っている、`sha256=` のような接頭辞を含めたまま比較している、といった小さな差で結果は一致しません。各サービスのドキュメントを確認し、実際に署名された文字列と出力形式をそろえてください。

このツールはブラウザ標準の **Web Crypto API**(SubtleCrypto)で HMAC を計算します。HTTPS や TLS と同じ系統の暗号 API を使い、すべてローカルで処理します。キーやメッセージはサーバーへ送信されません。DevTools の Network パネルを開けば、外部送信がないことを確認できます。