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-256、SHA-512、SHA-384、SHA-224、および最新のSHA-3バリアントを含む包括的なHMACアルゴリズムをサポートしています。レガシーサポートにはMD5とSHA-1が含まれます。計算式は次の通りです:HMAC(K, m) = H((K' ⊕ opad) || H((K' ⊕ ipad) || m))。
一般的な用途
セキュリティに関する考慮事項
セキュリティは秘密鍵に大きく依存します。鍵の強度:鍵はランダムであり、少なくともハッシュ関数の出力長(例: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を使用してブラウザ内で直接実行されます。鍵やメッセージがサーバーに送信されることはありません。
関連ツール
SHAハッシュジェネレーター
SHA-1、SHA-256、SHA-384、SHA-512アルゴリズムをサポートするオンラインハッシュ生成ツール
MD5/MD4ハッシュジェネレーター
テキストまたはファイルのMD5およびMD4ハッシュ値を複数の出力形式で生成
Base64エンコーダ/デコーダ
テキストやファイルの変換をサポートし、Base64文字列を素早くエンコード/デコード
JWTエンコーダ/デコーダ
JSON Web Tokensをデコード、検証、生成。複数の署名アルゴリズムをサポート
パスワードジェネレーター
カスタマイズ可能な長さ、文字タイプ、強度インジケーター、バッチ生成をサポートする安全なランダムパスワード生成ツール
タイムスタンプ変換
Unixタイムスタンプと人間が読める日付/時刻の間で変換します