技術リファレンス&アーキテクチャガイド

HMAC 署名生成・整合性検証ツール — リファレンスガイド

RFC 2104 準拠の鍵付きハッシュ(HMAC-SHA256、HMAC-SHA512、HMAC-SHA1、HMAC-MD5)をブラウザ内で瞬時に算出・定数時間(Timing-Safe)検証。

主要パラメータ&設定項目

ハッシュアルゴリズムEnum

署名計算に使用する基礎暗号学的ハッシュ関数(SHA-256、SHA-512、SHA-384、SHA-1、MD5)。

初期値: SHA-256
秘密鍵エンコーディングEnum

共有シークレット鍵の表現形式(UTF-8平文、16進数Hexバイト、Base64)。

初期値: UTF-8
メッセージエンコーディングEnum

署名対象ペイロードのエンコーディング形式。

初期値: UTF-8
出力形式Enum

署名出力形式(16進数小文字、大文字、Base64、Base64URL)。

初期値: hex-lower

プロの活用テクニック&推奨設定

Webhook署名照合には必ず定数時間比較(Timing-Safe)を採用

通常の文字列一致比較(===)は先頭の一致長により処理時間が変動し、秘密鍵漏洩(タイミング攻撃)を招きます。当ツールはO(1)定数時間比較を実行します。

GitHub および Stripe の署名仕様の違い

GitHubは「sha256=Hex文字列」を送信し、Stripeは「t=タイムスタンプ.本文」を結合してHMAC-SHA256で署名します。

RFC 2104 推奨の鍵長

秘密鍵の長さは使用するハッシュのブロックサイズ以上(SHA-256の場合は32バイト/256ビット以上)を確保することが推奨されます。

よくあるトラブルと解決策

正しいはずのWebhook署名が不一致になる

本文の生バイト(改行コードLF/CRLFや末尾スペース)が送信元と1バイトでも異なると署名は変わります。生のHTTPリクエスト本文をそのまま入力してください。

Base64 と Base64URL の記号の違い

URLセーフなAPIやJWTでは「+」が「-」に、「/」が「_」に置き換えられパディング「=」が省略されます。出力形式でBase64URLを選択してください。

よくある質問 (FAQ)

HMAC と単純な hash(key + data) の違いは何ですか?▼

AWS SigV4 の署名テストにも使えますか?▼

関連するおすすめ開発ツール

すべてのツール →