HMACジェネレーター
MD5、SHA-1、SHA-256、SHA-384、SHA-512を使用したHMACシグネチャを16進数またはBase64形式で計算します。
このツールについて
HMACジェネレーターは、シークレットキーを使用して任意のテキストメッセージのハッシュベースメッセージ認証コード(HMAC)を計算します。HMAC-MD5、HMAC-SHA1、HMAC-SHA256、HMAC-SHA384、HMAC-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やシステムが期待する形式に合わせることができます。
使い方
- Message テキストエリアにメッセージを入力または貼り付けます。
- Secret Key フィールドにシークレットキーを入力します。
- 5つのHMAC結果(MD5、SHA-1、SHA-256、SHA-384、SHA-512)が入力に応じて自動的に表示されます。
- 上部のバッジで Hex と Base64 の出力形式を切り替えます。
- 結果の横にあるコピーアイコンをクリックしてクリップボードにコピーします。
- Sample ボタンでテスト用のサンプルメッセージとキーを読み込みます。
- 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をサービスが送信するシグネチャヘッダーと比較できます。