HMACジェネレーター
HMACは、ほとんどの署名付きWebhook、AWS Signature v4ヘッダー、およびJWT HS256トークンの基盤となるアルゴリズムです。メッセージと秘密鍵を入力し、ハッシュファミリーを選択すると、このジェネレータはRFC 2104で定義されている通りのHMAC値を生成します。これは、バックエンドが送信しようとしているデータを検証したり、APIから受信した署名を再現したりするのに非常に有用です。
HMACを計算する方法
-
1
メッセージを貼り付ける
署名する正確なバイト列、Webhookのペイロード、正規化されたリクエスト、または任意の文字列です。
-
2
秘密鍵を入力する
テキストまたは16進数のいずれでも構いません。ジェネレーターはRFCに従い、鍵をブロックサイズに合わせてパディングまたはハッシュ処理します。
-
3
ハッシュアルゴリズムを選択する
デフォルトはSHA-256です。旧システムとの互換性が必要な場合は、SHA-1、SHA-384、SHA-512またはMD5を選択してください。
-
4
署名をコピーする
出力は小文字の16進数形式で、Webhook設定やAuthorizationヘッダーにそのまま貼り付けられます。
HMACの内部構造
HMACは、通常のハッシュ関数を鍵付きの構造で包み込むことで、鍵がなければ署名を偽造できないようにします。
RFC 2104のレシピ
HMAC(k, m) = H((k' ⊕ opad) ∥ H((k' ⊕ ipad) ∥ m))
ここで、k'はハッシュのブロックサイズに合わせてパディングされた鍵であり、opad = 0x5c repeatedとipad = 0x36 repeatedはパディング定数です。
アルゴリズムの選択
| アルゴリズム | ブロックサイズ | 出力長 | 推奨用途 |
|---|---|---|---|
| HMAC-SHA-256 | 64バイト | 32バイト | 現代の標準、Webhook署名 |
| HMAC-SHA-384 | 128バイト | 48バイト | 高セキュリティなAPI署名 |
| HMAC-SHA-512 | 128バイト | 64バイト | 長寿命トークン |
| HMAC-SHA-1 | 64バイト | 20バイト | レガシー(AWS S3 v2、OAuth 1.0) |
| HMAC-MD5 | 64バイト | 16バイト | レガシー用途のみ;新規開発では避けること |
HMACが登場する場面
- GitHub、Stripe、ShopifyのWebhook:ヘッダー
X-Hub-Signature-256、Stripe-Signatureなど。 - AWS Signature v4:正規化されたリクエストに対して連鎖的に適用されるHMAC-SHA256。
- JWT HS256:トークンの署名は
HMAC-SHA-256(header.payload, secret)です。 - パスワードリセットトークン:user_id、有効期限、およびサイトの秘密値を組み合わせたHMAC。
よくある間違い
- 16進エンコードされた鍵を、まずバイト列にデコードせずにテキストとして渡す。
- 誤ったペイロードのバイト列に署名する:一部のWebhookは空白文字を含む生のリクエストボディに署名し、他のWebhookは正規化された形式に署名します。
- 署名の比較にJavaScriptやPythonの
==を使う;タイミング攻撃を防ぐため、常にタイミングセーフな比較を使用してください。
よくある質問
ほとんどの場合、メッセージのバイト列が異なるためです。JSONとしてパースされたボディに署名すると空白文字が変わってしまうため、生のリクエストボディに署名してください。また、両側で鍵が同じ方法(16進数か生のバイト列か)でデコードされているかを確認してください。
はい。鍵の長さがハッシュブロックサイズより小さい場合はゼロで補充され、長い場合はまずハッシュ処理されます。RFC 2104では、出力の長さ(SHA-256では32バイト)以上の鍵を使用することを推奨しています。
HMACは、その攻撃がHMACの構成には引き継がれないため、既知のMD5衝突攻撃に対して依然として耐性があります。ただし、新しいコードにはHMAC-SHA-256を使用してください。ツールや監査担当者はこれを前提としています。
はい。HMACを計算するために、メッセージと秘密鍵は暗号化されたHTTPS接続で当サーバーに送信されます。計算にのみ使用され、保存や記録はされません。
関連ツール
Base64ファイルエンコーダー
あらゆるファイル(PDF、ZIP、画像、実行ファイル)をBase64テキストにエンコードし、JSON、メール、YAML、data URIへ埋め込めます。ブラウザ内でローカルに動作し、アップロードはありません。
CSRジェネレーター
PEMエンコードされた証明書署名要求と対応するRSA秘密鍵を生成します。コモンネーム、組織の項目、鍵のサイズ(2048、3072、4096ビット)を指定できます。
チェックサム検証
任意のテキストの MD5、SHA-1、SHA-256、SHA-384、SHA-512、CRC32 チェックサムを計算し、期待値と比較して一致・不一致を明確に判定します。
SSL証明書ジェネレーター
自己署名のSSL/TLS証明書とRSA秘密鍵をすべてブラウザ内で生成します。Common Name、SAN、有効期間をカスタマイズし、PEM形式で書き出します。
Atbash暗号エンコーダー
A-ZをZ-Aに対応させるヘブライ系の換字式暗号、Atbashでテキストをエンコードまたはデコードできます。同じ操作で暗号化と復号ができます。
暗号識別子
暗号文を貼り付けると、識別ツールが可能性の高いエンコード/暗号方式を示唆します: Base64、16進数、2進数、モールス、シーザーまたは換字、JWT、一般的なハッシュ。
このツールは他の言語でも利用できます
- Bộ tạo HMAC [VI]
- HMAC-generator [SV]
- HMAC-Generator [DE]
- ตัวสร้าง HMAC [TH]
- Générateur HMAC [FR]
- Gerador de HMAC [PT]
- HMAC Generator [ID]
- Generador de HMAC [ES]
- HMAC-generator [NL]
- مولّد HMAC [AR]
- HMAC 생성기 [KO]
- Generator HMAC [PL]
- HMAC Generator [EN]
- Generatore HMAC [IT]
- Генератор HMAC [RU]
- HMAC Jeneratörü [TR]
- HMAC 生成器 [ZH]