このツールについて
HMAC は、メッセージが共有秘密を知る者から来て改ざんされていないことを証明します——署名付き Webhook、API リクエスト署名、多くのトークン方式の裏にある仕組みです。メッセージと秘密鍵を入力し、SHA-256・SHA-384・SHA-512 を選ぶと、16進または Base64 で署名が得られます。
計算はブラウザ標準の Web Crypto API を使い、すべてあなたの端末上で行われるため、秘密鍵が送信されることはありません。入力と同時にライブ更新されます。
よくある質問
HMAC は何に使われますか?
HMAC(ハッシュベースメッセージ認証コード)は、メッセージが改ざんされていないこと、そして共有の秘密鍵を知っている相手から送られたことの両方を証明します。Stripe や GitHub のようなサービスが Webhook のペイロードに署名して真正性を検証できるようにするのに使われています。
HMAC は単にメッセージをハッシュ化するのと同じですか?
いいえ。単純なハッシュ(メッセージだけの SHA-256)は誰でも再計算できるため、送信元については何も証明しません。HMAC は長さ拡張攻撃に強い構造で秘密鍵を組み込むため、鍵を持つ者だけが有効な署名を生成できます。
私の秘密鍵はどこかに送信されますか?
いいえ。HMAC はブラウザの Web Crypto API(crypto.subtle)を使ってローカルで計算されます。鍵とメッセージがあなたのデバイスから出ることはありません。
正しくコピーしたはずなのに署名検証が「不一致」になるのはなぜですか?
Webhook のヘッダーには sha256=<hex> のようなプレフィックスが付いていたり、大文字小文字が異なっていたり、前後に余分な空白が入っていることがあります。検証機能は大文字小文字を正規化し algorithm= プレフィックスを自動で取り除きますが、送信元と同じハッシュアルゴリズムと鍵のエンコーディング(UTF-8/Hex/Base64)を選んでいるか改めて確認してください。
どの鍵エンコーディングを選べばいいですか?
ほとんどの API はプレーンな UTF-8 のシークレット文字列(例: whsec_...)を提供するので、UTF-8 を選んでください。プロバイダーのドキュメントに鍵がその形式でエンコードされていると明記されている場合のみ、Hex や Base64 を選んでください。