Kitoo Tool

HMACチェック

HMAC-SHA-256 などの署名をブラウザ内で計算・照合できます。LINE・GitHub・Stripe の Webhook 署名プリセット付き。秘密鍵はサーバーに送信されません。

秘密鍵やメッセージはサーバーに送信されません。すべてブラウザ内で計算されます。

改行・空白もそのまま計算対象になります。ボディの再シリアライズで空白やキー順が変わると署名は一致しません。

HMACチェックの使い方

キー(共通鍵・シークレット)とメッセージを入力すると、HMAC 署名がリアルタイムに計算されます。 Webhook の署名を再現したい場合は、LINE・GitHub・Stripe のプリセットを選ぶだけでアルゴリズムと出力形式が自動で設定されます。

受け取った署名を照合欄に貼り付けると、一致・不一致をその場で確認できます。 sha256= や t=...,v1= などのヘッダー形式は自動で読み取ります。

LINE・GitHub・Stripe の署名形式の違い

Webhook の署名はサービスごとにヘッダー名と形式が異なります。このツールのプリセットは次の形式に対応しています。

サービスヘッダー名署名の形式キー
LINE Messaging APIx-line-signatureHMAC-SHA-256 を Base64 化チャネルシークレット
GitHub WebhookX-Hub-Signature-256sha256= + 16進数Webhook シークレット
StripeStripe-Signaturet=タイムスタンプ, v1=16進数(署名対象は t.ボディ)エンドポイントの署名シークレット

照合が一致しないときの確認ポイント

署名が一致しない最大の原因は、メッセージが「生データ」ではないことです。JSON ボディをパースしてから再生成すると、 空白やキーの順序が変わって署名が一致しません。必ず受け取ったままの文字列を使ってください。

あわせて、キーの形式(テキスト・Hex・Base64)と末尾の改行、文字コードも確認してください。 このツールは RFC 4231 のテストベクトル(キー 0x0b×20、メッセージ「Hi There」→ SHA-256 で b0344c61…32cff7)で実装の正しさを検証しています。

ブラウザ内処理とプライバシー

このツールは秘密鍵やメッセージをサーバーに送信しません。計算はすべてお使いの端末のブラウザ内で完結するため、 本番環境のシークレットを使った検証にも安心して使えます。

なお、このツールの照合は画面表示用です。本番の Webhook 受信側で署名を検証するときは、 タイミング攻撃を防ぐ定数時間比較(Node.js の crypto.timingSafeEqual など)を使ってください。

FAQ

秘密鍵はサーバーに送信されますか?

いいえ。キー、メッセージ、署名のすべてがお使いのブラウザ内で処理されます。外部のサーバーに送信されることはありません。

署名が一致しないとき、まず何を確認すべきですか?

メッセージを生データのまま使っているか確認してください。JSON を一度パースして再シリアライズすると空白やキーの順序が変わり、署名が一致しなくなります。あわせてキー形式(テキスト・Hex・Base64)と文字コード、末尾の改行も確認してください。

LINE の署名と同じ形式で出力できますか?

はい。プリセットで「LINE Messaging API」を選ぶと、チャネルシークレットをキーに HMAC-SHA-256 を計算し、Base64 形式で出力します。Webhook の x-line-signature ヘッダーの値とそのまま照合できます。

本番サーバーでの署名検証にも使えますか?

このツールは開発・デバッグ用の画面表示です。本番の Webhook 受信側では、タイミング攻撃を防ぐため定数時間比較(Node.js の crypto.timingSafeEqual、Python の hmac.compare_digest など)を使って検証してください。

関連ツール