HMAC生成と検証
推奨キーの長さは、ハッシュ出力の長さに対応しています。SHA-1=20バイト、SHA-256=32バイト、SHA-384=48バイト、SHA-512=64バイト
説明
- • HMAC は、ソースと整合性の認証のためのキーと橋アルゴリズムに基づいて署名を生成します
- • サポート SHA-1/SHA-256/SHA-384/SHA-512
- • データをアップロードすることなく、ブラウザ内でローカルで生成および検証
- • バリデーションは、時間シリーズの差を削減するためにバイトによって固定長さを使用します
HMAC署名をオンライン無料で生成・検証。一般的なSHAシリーズアルゴリズムをサポート。インターフェース署名・Webhook検証・セキュリティ連携に最適。
関連おすすめ
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 パネルを開けば、外部送信がないことを確認できます。
ユースケース
- 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 署名方式の実装・検証に使えます
使い方
- アルゴリズムを選ぶ:通常は現代的な API で広く使われる HMAC-SHA256 を選びます
- メッセージを入力する:Webhook の生ボディや API リクエスト文字列を貼り付けます
- キーを入力する:Webhook Secret や API Secret を入力します
- 形式を選ぶ:Stripe なら Hex、JWT なら Base64URL など、相手側の仕様に合わせます
- 署名を検証する:検証モードに切り替え、期待される署名を貼り付けて一致するか確認します
特徴
- 複数アルゴリズム対応:HMAC-SHA256/384/512、SHA1、MD5 に対応し、現代的な API から古い連携まで確認できます
- Webhook 署名検証:Stripe、GitHub、Shopify、Slack の代表的な署名形式を自動解析して確認できます
- 3つの出力形式:Hex / Base64 / Base64URL を切り替え、API やプラットフォーム側の要求に合わせられます
- リアルタイム生成:入力変更後すぐに計算されるため、毎回ボタンを押さずに差分を確認できます
- 署名検証モード:期待される署名を貼り付けるだけで、一致/不一致をその場で確認できます
- キー長チェック:短すぎるキーを検知し、実運用で危険な設定に気づきやすくします
- ブラウザ内処理:Web Crypto API でローカル計算し、キーやメッセージはサーバーへ送信されません
- JWT 対応:HMAC-SHA256 の結果は、HS256 署名の理解や検証にもそのまま役立ちます
よくある質問
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 署名を現実的に偽造する方法は知られていません。安全性はキーの秘匿性に強く依存するため、キーの漏えい防止と定期的なローテーションが重要です。
- 安全文字列比較
- 二進数変換
- シーザー暗号
- モールス信号
- 16進数変換
- 動画→Base64変換
- Base64 を動画に変換
- 画像をBase64に変換
- Base64を画像に変換
- テキスト→Base64変換
- Base64→テキスト変換
- ファイルハッシュ検証
- File to Base64
- Base64→ファイル変換
- 音声→Base64
- Base64を音声に変換
- AES暗号化・復号化
- DES暗号化/復号
- Base32 エンコーダー デコーダー
- Base58 エンコードとデコード
- Base64 エンコード
- Base64 デコード
- Base64比較
- Base64 分割
- Base64複数行マージ
- Base64フォーマット
- Base64形式チェック
- Base64一括エンコード
- Base64一括デコード
- Base64クリーナー
- Base64 パディング処理
- Base64長さ統計
- Base64→16進数変換
- Base64 DataURL 変換
- Base64-Hex双方向変換
- Base85エンコーダー/デコーダー
- HMAC生成と検証
- PBKDF2鍵導出
- MD5 ハッシュ値
- SHA-256 ハッシュ
- SHA1 ハッシュ
- SHA512ハッシュ
- JWT デコーダー
- HTMLエンティティエンコード/デコード
- Unicodeエスケープ
- URL エンコード
- URL Safe Base64変換
- MIME Base64
- Java難読化
- JS難読化
- PHP難読化
- Python難読化