ESC

HMAC生成ツール

HMAC出力がここに表示されます...

HMAC比較

すべての処理はWeb Crypto APIを使用してブラウザ内で行われます。データはサーバーに送信されません。

使用例

API認証

REST APIで一般的に使用されるAPIリクエスト認証用のHMAC署名を生成します。

Webhook検証

StripeやGitHubなどのサービスからのHMAC署名を比較してWebhookペイロードを検証します。

JWT署名

JSON Web Token(JWT)ペイロード署名用のHMAC-SHA256署名を作成します。

機能

複数アルゴリズム

HMAC-SHA256、HMAC-SHA384、HMAC-SHA512、HMAC-SHA1アルゴリズムをサポート

HMAC比較

生成されたHMACを期待値と比較してメッセージの整合性を検証

複数出力形式

異なる統合ニーズに対応する16進数またはBase64エンコーディング出力

Web Crypto API

ネイティブWeb Crypto APIを使用した安全なブラウザベースのHMAC生成

使い方

1

メッセージと鍵を入力

メッセージを入力または貼り付け、秘密鍵を入力してください。

2

アルゴリズム選択

HMACアルゴリズム(SHA-256、SHA-384、SHA-512、SHA-1)と出力形式を選択してください。

3

生成してコピー

HMAC生成をクリックして結果をコピーしてください。

よくある質問

HMAC(Hash-based Message Authentication Code)は、暗号学的ハッシュ関数と秘密鍵を組み合わせて署名を生成します。メッセージの整合性(改ざんされていないこと)と真正性(送信者が秘密鍵を知っていること)の両方を証明します。鍵がなければ誰も有効なHMACを偽造できないため、認証目的では単純なハッシュよりはるかに強力です。

「hello」のSHA-256ハッシュは常に同じで、誰でも計算できます。「hello」のHMAC-SHA256は秘密鍵ごとに異なる結果を返します。単純なハッシュは整合性のみを提供します(改ざんを検出)。HMACは整合性に加えて認証も提供します(誰が署名したかを証明)。APIがリクエスト署名に単純なSHA-256ではなくHMACを使う理由がここにあります。

HMAC-SHA256は業界標準で、ほとんどのサービスが使用しています:AWS Signature Version 4、Stripeウェブフック、GitHubウェブフック、Shopifyウェブフック。HMAC-SHA512は追加のセキュリティマージンを提供し、64ビットハードウェアではSHA-256より高速です。新規プロジェクトではHMAC-SHA1を避けてください。必要とするレガシーシステムとの統合時にのみ使用してください。

どちらも同じHMAC値を異なるエンコーディングで表現します。Hex(16進数)はHMAC-SHA256で64文字を生成し、手動で読んで比較しやすいです。Base64は44文字を生成し、よりコンパクトで、HTTP Authorizationヘッダー、JWT署名、APIリクエストヘッダーで一般的に使用されます。生成前に対象サービスがどちらの形式を期待しているか確認してください。

Stripeからウェブフックを受信すると、ペイロードにはエンドポイントの秘密鍵で署名された生ボディのHMAC-SHA256を含むX-Stripe-Signatureヘッダーが付いてきます。検証するには:秘密鍵を使って生リクエストボディのHMAC-SHA256を計算し、ヘッダーの値と比較します。一致すればウェブフックは本物です。GitHubも同様にX-Hub-Signature-256を使います。このツールを使えばコードを書かずにこれらの署名を計算・検証できます。

HMAC-SHA256では、推奨される鍵の長さはハッシュ出力サイズと一致する少なくとも32バイト(256ビット)です。鍵が短いとセキュリティが低下します。長い鍵は問題ありません。人間が記憶できる文字列は予測しやすいため、絶対に鍵として使用しないでください。暗号学的に安全なRNGで鍵を生成し、環境変数またはシークレットマネージャーに保存してください。ソースコードには絶対に記載しないでください。

HMACを生成し、期待するHMAC値を比較フィールドに貼り付けます。ツールが2つの値を比較して一致するかどうかを報告します。ウェブフック署名の検証に役立ちます:受信したペイロードと鍵から期待するHMACを計算し、リクエストヘッダーの署名と比較します。一致すればウェブフックが本物であることが確認されます。

絶対に離れません。すべてのHMAC生成はブラウザ内で完全に動作するWeb Crypto API(window.crypto.subtle.sign)を使用します。鍵、メッセージ、HMAC出力はどのサーバーにも送信されません。インターネットから切断しても、ツールはまったく同じように動作します。

HMACとは

HMACはHash-based Message Authentication Code(ハッシュベースメッセージ認証コード)の略です。SHA-256のような暗号学的ハッシュ関数と秘密鍵を組み合わせて、メッセージの整合性と真正性の両方を証明する署名を生成します。単純なハッシュと違い、HMACは秘密鍵を知っている人だけがコードを生成できたことを保証します。だからAPI認証、Webhook検証、JWT署名の基盤なのです。

実際にHMACが使われている場所

Stripe、GitHub、AWSと統合したことがあれば、HMACを使ったことがあります。StripeはWebhookペイロードをHMAC-SHA256で署名し、本当にStripeから来たことを検証できるようにしています。AWSはSignature Version 4でAPIリクエスト署名にHMAC-SHA256を使います。HS256アルゴリズムのJWTは文字通りHMAC-SHA256です。このツールではコードを書かずにこれらの署名を生成・検証できます。

HMAC vs 単純なハッシュ

"hello"のSHA-256ハッシュは誰が計算しても常に同じです。でも"hello"のHMAC-SHA256は秘密鍵ごとに異なります。つまりメッセージが改ざんされていないこと、かつ鍵を知っている人が作成したことの両方を証明します。これが決定的な違いです:ハッシュは整合性を、HMACは整合性プラス認証を提供します。

正しいアルゴリズムの選び方

HMAC-SHA256が業界標準で、特別な理由がない限り使うべきものです。HMAC-SHA384とHMAC-SHA512はより高いセキュリティマージンのために長い出力を生成します。HMAC-SHA1は古いシステムとの後方互換性のためにサポートされていますが、新しい実装では使うべきではありません。

セキュリティとプライバシー

このツールはブラウザ内でWeb Crypto APIを使って完全に動作します - TLSを処理するのと同じ暗号実装です。秘密鍵がサーバーに触れることはありません。オフラインで実行して確認できます。

セキュリティとプライバシー

あなたのデータの安全を最優先しています

ローカル処理

すべての処理がブラウザ内で完結します

データ送信なし

データはサーバーに送信されません

保存しません

データは保存も共有もされません

SSL暗号化

安全な通信でご利用いただけます

次のステップ

MoreOnlineToolsでもっと見る