— このツールについて
HMAC(Hash-based Message Authentication Code)は、メッセージをシークレットキーおよびハッシュ関数と組み合わせ、メッセージの完全性と真正性の両方を証明する署名を生成します。シークレットを共有している相手であれば誰でも HMAC を再計算し、メッセージが改ざんされていないことを確認できます。これは webhook 署名(Stripe、GitHub、Slack)、署名付き Cookie、多くの API 認証スキームの背後にある仕組みです。
メッセージとシークレットを入力し、ハッシュアルゴリズムと出力エンコーディングを選択すると、入力に合わせて署名がリアルタイムに更新されます。署名はブラウザー内の Web Crypto API で計算されるため、メッセージもシークレットもサーバーに送信されることは一切ありません。特定の連携で別途要求されない限り、SHA-256 を使用してください。
メッセージとシークレットがブラウザーの外に出ることはありません。HMAC は Web Crypto API を使ってローカルで計算されます。
よくある質問
HMAC と通常のハッシュの違いは何ですか?
通常のハッシュ(SHA-256 など)は、メッセージだけから誰でも計算できるため、完全性しか証明できません。HMAC はさらにシークレットキーを混ぜ込むため、有効な署名は送信者がシークレットを知っていたことも証明します。これが認証に役立つ理由です。
どのアルゴリズムを使えばよいですか?
SHA-256 が標準的な選択肢であり、ほとんどの API が期待するものです。SHA-384 と SHA-512 はより大きな出力を提供します。SHA-1 はレガシー連携向けにサポートされていますが、新しいシステムには推奨されません。
hex と Base64 の出力はどちらが優れていますか?
どちらも同じバイト列をエンコードしたものなので、連携先が期待する方を選んでください。webhook プロバイダーは通常どちらか一方を指定します。たとえば GitHub は hex を使用し、一部のプロバイダーは Base64 を使用します。