開発者 / 署名
HMACジェネレーター(SHA-256、SHA-512)
SHA-256、SHA-384、SHA-512、SHA-1を使い、メッセージと秘密鍵からHMAC署名を16進数またはBase64で生成して、WebhookやAPIの署名をテストできます。
HMACジェネレーター(SHA-256、SHA-512): HMACは、ハッシュ関数を使って秘密鍵とメッセージを組み合わせます。そのため、同じ署名を生成できるのは鍵を持つ人だけです。計算にはブラウザのWeb Crypto APIを使用します。これはブラウザがHTTPSで使用するものと同じ実装です。空の鍵も使用できます。HMACの標準で定義されているとおり、0バイトの鍵として扱われます。 サーバーへのファイルアップロードは一切なく、100%ブラウザ内でローカル実行します。
- カテゴリ
- 開発者ツール
- 実行回数
- ブラウザ内で
- コスト
- 無料 · 登録不要
- 提供状況
- すぐに使えます
完全にブラウザ内で実行します
——メッセージは、スペースや改行を含め、入力したとおりのUTF-8テキストとして読み取られます。末尾の改行があると結果が変わります。StripeやGitHubなどのサービスからのWebhookは、この方法でHMAC-SHA256署名されています。
Webhookを検証する
解析する前の生のリクエストボディを取得し、共有シークレットでHMACを計算して、署名ヘッダーとタイミング攻撃の影響を受けない方法で比較します。これにより、一致した文字数が処理時間から漏れるのを防げます。リプレイ攻撃を阻止するため、タイムスタンプが数分以上古いリクエストは拒否します。
鍵なしでハッシュを計算する場合はハッシュジェネレーターを、署名付きトークンにはJWTデコーダーを使用してください。
鍵
ハッシュ出力と同じ長さの鍵、つまりSHA-256では32個のランダムなバイトを使うと、最大限の強度が得られます。それより長い鍵は、最初にハッシュ化されて短くなります。鍵をコードリポジトリに保存せず、漏えいした場合はローテーションしてください。
使い方
- 送信された内容と完全に同じメッセージを貼り付けます。Webhookの生のボディなどを使用してください。
- 秘密鍵をテキストまたは16進数で入力し、ハッシュを選択します。
- 16進数またはBase64の結果を、受け取った署名と比較します。
プライバシーと制限事項
メッセージと鍵はブラウザ内に留まり、どこにも送信されません。
関連ツール
よくある質問
Webhookの署名と一致しないのはなぜですか?
署名対象のメッセージは、1バイト単位で生のボディと一致している必要があります。JSONを解析して再シリアライズしたり、改行が1つ欠けたり余分に入ったりすると、内容が変わります。サービスによっては、Stripeのt=…、payloadのように、タイムスタンプとボディをまとめて署名します。
HMAC-SHA1はまだ安全ですか?
通常のハッシュでSHA-1を使う場合とは異なり、HMACでは現在も安全だと考えられています。ただし、新しいシステムではHMAC-SHA256を使用してください。
16進数とBase64のどちらを使えばよいですか?
どちらも同じバイト列を表記する方法です。サービスに表示される形式を使用してください。GitHubはsha256=プレフィックス付きの16進数を使用し、多くのサービスはBase64を使用します。
無料ツール · ブラウザ内で · アカウント不要