HMACジェネレーター

MD5、SHA-1、SHA-256、SHA-384、SHA-512を使用したHMACシグネチャを16進数またはBase64形式で計算します。

このツールについて

HMACジェネレーターは、シークレットキーを使用して任意のテキストメッセージのハッシュベースメッセージ認証コード(HMAC)を計算します。HMAC-MD5HMAC-SHA1HMAC-SHA256HMAC-SHA384HMAC-SHA512の5つのアルゴリズムを同時に計算するため、ツールを切り替えることなく結果を比較し、用途に合ったものを選択できます。

HMACは暗号学的ハッシュ関数とシークレットキーを組み合わせてメッセージ認証コードを生成します。単純なハッシュとは異なり、HMACはデータの完全性認証の両方を提供します。シークレットキーを知っている者だけが、指定されたメッセージに対して有効なHMACを生成できます。これにより、APIシグネチャの検証、Webhook検証、トークン生成にHMACは不可欠です。HMAC署名を使用するJWTの検証には、JWTデコーダーをご利用ください。

SHAベースのアルゴリズム(SHA-1、SHA-256、SHA-384、SHA-512)はブラウザ組み込みのWeb Crypto APIを使用して計算され、ハードウェアアクセラレーションによる定時間実装が提供されます。HMAC-MD5はspark-md5ライブラリを使用したRFC 2104準拠の手動HMAC構築(H(K XOR opad || H(K XOR ipad || message)))で計算されます。MD5は単体ハッシュとしては暗号学的に脆弱とされていますが、HMAC-MD5はほとんどの実用的なシナリオで既知の攻撃に対して安全です。キーなしの単純なハッシュダイジェストにはハッシュジェネレーターをご利用ください。

すべての処理はブラウザ内で完全に実行されます。メッセージとシークレットキーがサーバーに送信されることはありません。出力形式は16進数Base64エンコーディングを切り替えて、APIやシステムが期待する形式に合わせることができます。

使い方

  1. Message テキストエリアにメッセージを入力または貼り付けます。
  2. Secret Key フィールドにシークレットキーを入力します。
  3. 5つのHMAC結果(MD5、SHA-1、SHA-256、SHA-384、SHA-512)が入力に応じて自動的に表示されます。
  4. 上部のバッジで HexBase64 の出力形式を切り替えます。
  5. 結果の横にあるコピーアイコンをクリックしてクリップボードにコピーします。
  6. Sample ボタンでテスト用のサンプルメッセージとキーを読み込みます。
  7. Ctrl+Shift+C でHMAC-SHA256の結果を素早くコピーできます。

よくある質問

データは安全ですか?

はい。すべてのHMAC計算はWeb Crypto APIとspark-md5ライブラリを使用してブラウザ内で完全に実行されます。メッセージとシークレットキーがサーバーに送信されることはありません。ブラウザの開発者ツールのネットワークタブで確認できます。

HMACと通常のハッシュの違いは何ですか?

通常のハッシュ(SHA-256など)はメッセージのみからダイジェストを生成するため、誰でも計算できます。HMACはハッシュにシークレットキーを組み合わせるため、キーを知っている当事者だけがコードを生成・検証できます。これにより、完全性チェックに加えて認証が提供されます。

どのHMACアルゴリズムを使用すべきですか?

現代のほとんどのアプリケーションには、HMAC-SHA256が推奨されます。強力なセキュリティを提供し、広くサポートされています。HMAC-SHA512はより大きな出力でさらなる安全マージンを提供します。HMAC-SHA1とHMAC-MD5はレガシー互換性のために含まれていますが、新しい設計では避けるべきです。

HMAC-MD5は安全ですか?

MD5自体には既知の衝突脆弱性がありますが、HMAC-MD5はキー付き構造のため衝突攻撃の直接的な影響を受けません。既知の実用的な攻撃に対して安全です。ただし、新しいシステムにはHMAC-SHA256またはHMAC-SHA512が推奨されます。

16進数とBase64出力の違いは何ですか?

どちらも同じバイナリHMAC出力をテスト形式で表現したものです。16進数は0-9とa-fの文字を使用し、長い文字列になります。Base64はA-Z、a-z、0-9、+、/を使用し、短い文字列になります。APIやシステムが期待する形式を選択してください。

Webhookシグネチャの検証に使用できますか?

はい。多くのサービス(Stripe、GitHub、Slackなど)はHMAC-SHA256でWebhookペイロードに署名します。Webhook本文をメッセージに、Webhookシークレットをキーに貼り付けて、計算されたHMACをサービスが送信するシグネチャヘッダーと比較できます。

関連ツール