CoderTools

HMACジェネレーター

複数のハッシュアルゴリズムで安全なHMAC認証コードを生成

HMAC生成に使用する秘密鍵。機密に保管してください!

* SHA-1は安全でないと見なされています。** MD5は暗号学的に破られており、レガシー互換性のためにのみ使用してください。新しいアプリケーションにはSHA-256またはSHA-512を使用してください。

HMACについて

HMAC (Keyed-Hash Message Authentication Code) は、暗号化ハッシュ関数と秘密鍵を使用してメッセージ認証を行うための特定のメカニズムです。RFC 2104で規定されているように、データの整合性とメッセージの認証(Authentication)の両方を検証するために使用できます。

データの整合性を保証するだけの標準的なハッシュ関数(SHA-256など)とは異なり、HMACは秘密鍵を使用して真正性(攻撃者による改ざんの検知)を保証します。API認証(AWS Signature v4など)、JWT、金融データ転送などで広く使用されています。HMACの強度は、基礎となるハッシュ関数の強度、ハッシュ出力のビット長、および鍵の品質に依存します。

サポートされているHMACアルゴリズム

このツールは、SHA-256SHA-512SHA-384SHA-224、および最新のSHA-3バリアントを含む包括的なHMACアルゴリズムをサポートしています。レガシーサポートにはMD5SHA-1が含まれます。計算式は次の通りです:HMAC(K, m) = H((K' ⊕ opad) || H((K' ⊕ ipad) || m))

一般的な用途

APIリクエスト認証と署名検証
HS256/HS384/HS512によるJWT(JSON Webトークン)署名
Webhookペイロード検証
パスワードベースの鍵導出(PBKDF2)
セキュア通信におけるメッセージ整合性検証

セキュリティに関する考慮事項

セキュリティは秘密鍵に大きく依存します。鍵の強度:鍵はランダムであり、少なくともハッシュ関数の出力長(例:SHA-256の場合は32バイト)と同じ長さである必要があります。アルゴリズムの選択:最新のアプリケーションにはSHA-256またはSHA-512を使用してください。MD5とSHA-1は衝突攻撃に対して脆弱であるため避けてください。

メッセージ: "Hello, World!"

秘密鍵: "secret-key-2025"

アルゴリズム: HMAC-SHA256

出力:

e4d7f1b4c4e5a8d3e...

よくある質問 (FAQ)

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

ハッシュ(SHA-256など)は一方向関数であり、誰でも計算できます。HMACはハッシュ関数に「秘密鍵」を加えたものです。秘密鍵を持つ人だけが正しいHMACを生成または検証できるため、認証に適しています。

なぜ単に Hash(Key + Message) を使わないのですか?

鍵とメッセージを単に連結する(`H(Key + Message)`)方法は、MD5やSHA-1などの特定のハッシュ関数において「伸長攻撃(Length Extension Attack)」に対して脆弱です。HMACのネストされた構造は、この攻撃を防ぐために特別に設計されています。

HMACは可逆ですか(復号できますか)?

いいえ。HMACは暗号化ハッシュ関数であり、暗号化アルゴリズムではありません。一方向です。出力から元のメッセージや鍵を復元することはできません。データを隠すためではなく、真正性を確認するために使用されます。

秘密鍵の長さはどれくらいにすべきですか?

RFC 2104では、少なくともハッシュ出力長(例:SHA-256の場合は32バイト)に等しい鍵長を推奨しています。ブロックサイズを超える鍵を使用しても、ハッシュ化されるためセキュリティは大幅には向上しません。

パスワードの保存に使用できますか?

単純なハッシュよりは優れていますが、パスワードにはPBKDF2、bcrypt、Argon2などの専用の鍵導出関数(KDF)を使用すべきです。PBKDF2は内部でHMACを使用していますが、総当たり攻撃を遅らせるための反復処理が追加されています。

このツールを使っても鍵は安全ですか?

はい。このツールは完全にクライアントサイドで動作します。HMAC計算はWeb Crypto APIまたはCryptoJSを使用してブラウザ内で直接実行されます。鍵やメッセージがサーバーに送信されることはありません。

クイックメニュー

最近のツールはありません