Hash & Crypto Helpers

HMAC生成鍵と本文のバイトを確かめる

本文と鍵のエンコーディングを選び、署名の生成または受信したダイジェストの検証を実行します。

HMAC生成

メッセージ

HMACダイジェスト

本文と鍵はこのページのメモリーだけで処理し、送信やブラウザーストレージへの保存は行いません。

設定

空白削除や正規化は行いません。複数行の鍵はHex/Base64で入力し、参照値には接頭辞を付けないでください。

本文は1,000,000 UTF-16単位かつバイトまで。鍵は4,096 UTF-16単位までで、空は不可。

鍵を入力して生成または検証してください。本文は空でも構いません。

HMAC生成は、APIやwebhookの署名がサーバー側と一致しないときの確認に使えます。アルゴリズムだけでなく、本文と鍵がどのバイト列として扱われるかを揃えてください。

このHMACジェネレーターはHMAC-SHA256を初期選択にし、SHA-512とSHA-1にも対応します。HMAC署名検証の前に、サービスの仕様に従って署名対象の文字列を準備します。

HMAC生成で確認できること

文字列とバイト列を分ける

HMAC生成では鍵のエンコーディングを本文とは別に指定します。文字列の6162は4バイト、Hexの6162は2バイトです。同じ見た目でも、選んだ形式によって署名に使う鍵が変わります。

同じ表示の鍵が異なる長さのバイト列になり、同じ本文の署名処理へ入る図。

生成前でも検証できる

期待するダイジェストを入力すれば、生成を先に押す必要はありません。現在の本文と鍵を使い、形式エラー、長さエラー、正しい形式での不一致を分けて表示します。

一致したダイジェストのチェックと、本文の1バイト変更後に異なるダイジェストとなる図。

不一致を減らす準備

01

受信した本文を保つ

JSONの整形やキーの並べ替えは署名対象を変えてしまいます。末尾の改行やBOM、Unicodeの表現も確認してください。

  • テキスト欄で保持できないバイトはHexかBase64で渡します。
02

鍵の形式を合わせる

そのままの文字はUTF-8、16進数のバイト列はHex、符号化された鍵は標準Base64を選びます。鍵は初期状態で非表示です。

  • 鍵の欄への貼り付けやドロップに改行があれば、元の鍵を保持して拒否します。複数行の鍵は先にHexかBase64に変換してください。
03

参照値の形式で照合する

出力形式と期待するダイジェストの形式は独立しています。生成と検証は手動で実行し、入力や設定を変えるとコピーが無効になります。

  • Ctrl/Cmd + Enterは期待するダイジェストの欄では検証、それ以外では生成を実行します。計算中の連打では再実行しません。

署名条件を個別に指定

必要なアルゴリズムを選ぶ

SHA-256は32バイト、SHA-512は64バイト、SHA-1は20バイトの完全なダイジェストを返します。SHA-1は既存の仕組みとの互換性確認用です。

本文も鍵も形式を指定

UTF-8、Hex、標準Base64から選択できます。Hexの大文字と小文字は同じバイトを表しますが、Base64では大文字と小文字に意味があります。出力はHexまたはBase64です。

ブラウザー標準の検証

Web CryptoのHMACで署名と検証を実行します。一致は指定された本文と鍵の組み合わせに対する結果であり、時刻の有効性やリプレイ対策を確認するものではありません。

入力の規則と対象範囲

自動修正しない
空白削除、Unicode正規化、JSONの再変換は行いません。Hexの空白・接頭辞・奇数桁はエラーです。Base64URL、空白、不正なパディングや末尾ビットも拒否し、正しく省略されたパディングは受け付けます。
空の本文と入力上限
空の本文は署名できますが、空の鍵は使えません。本文は1,000,000 UTF-16単位かつ復号後1,000,000バイトまで、鍵は4,096 UTF-16単位までです。孤立サロゲートは拒否します。
ダイジェスト全体を指定
参照値は選択したアルゴリズムの20・32・64バイトが必要です。sha256=などの接頭辞は自分で取り除きます。切り詰めた署名、ファイル、URL取得、プラットフォーム別テンプレートには対応しません。
置換は確認してから適用
例の読み込みとクリアは置換する文字数を表示し、適用後に1回取り消せます。鍵を含む直前の状態はページ内メモリーに残り、次の入力編集で破棄されます。鍵生成やパスワード保管は行いません。

HMAC生成のよくある質問

HMACは普通のハッシュとどう違う?

通常のハッシュは本文から計算しますが、HMACは共有の秘密鍵も使います。鍵を本文の前後につなぐだけではHMACになりません。本ツールは定義されたHMAC構造を標準APIで計算します。

受信したwebhook署名はどう検証する?

送信元の仕様どおりに署名対象のバイト列を準備し、ヘッダーから取り出したダイジェストを入力してください。タイムスタンプの結合、ヘッダー解析、期限やリプレイの確認は別途必要です。

鍵と出力のエンコーディングはどう選ぶ?

鍵が文字列か、HexまたはBase64で表したバイト列かを仕様書で確認します。HMAC生成の出力形式は参照値と別に選べるので、Hex出力とBase64参照値でも同じバイトを照合できます。

HMAC-SHA256は安全?

HMAC-SHA256はメッセージ認証に使われますが、鍵の管理やプロトコル側の検証も必要です。ここで一致しても、受信時刻、送信元の権限、再送の可否まで保証されるわけではありません。

HMAC-MD5やHMAC-SHA-3がないのはなぜ?

このページはSHA-256、SHA-512、SHA-1に範囲を限定しています。MD5とSHA-3、SHA-384は選べません。相手が別の方式を指定しているときは、似た名前のアルゴリズムで代用しないでください。

解決しませんでしたか?

既知の署名で試す

HMAC生成でRFCの例を検証したら、本文を1文字変更して、参照値と一致しなくなることを確かめてください。

本文と鍵のエンコーディングを選び、署名の生成または受信したダイジェストの検証を実行します。