🔏 HMAC計算機
秘密鍵を入力してください
秘密鍵とメッセージを入力すると、HMAC(鍵付きハッシュメッセージ認証コード)をリアルタイムで計算するツールです。SHA-1・SHA-256・SHA-384・SHA-512に対応しています。すべての計算はブラウザ内でWeb Crypto APIを使って行われ、入力内容が外部に送信されることはありません。
使い方
- 秘密鍵を入力します。
- メッセージ(署名対象のテキスト)を入力します。
- ハッシュアルゴリズムを選択します。
- HMAC値が16進数とBase64の両方の形式で自動的に表示されます。
計算の仕組み
HMAC(Hash-based Message Authentication Code)は、秘密鍵とハッシュ関数を組み合わせて、メッセージが改ざんされていないことと、正しい相手が作ったことを確かめるための値で、RFC 2104で定められています。 HMAC(K, m) = H((K ⊕ opad) ‖ H((K ⊕ ipad) ‖ m)) Kは鍵、mはメッセージ、Hはハッシュ関数(SHA-256など)、ipad・opadは決まった値の詰め物です。ハッシュを2回重ねることで、単に「鍵+メッセージ」をハッシュするより安全になります。 このツールは、鍵とメッセージをUTF-8のバイト列にして、ブラウザのWeb Crypto APIでHMAC-SHA1・SHA-256・SHA-384・SHA-512を計算し、16進数とBase64で表示します。計算結果は、RFC 4231のテストケースと一致することを確認しています。
計算例
RFC 4231 テストケース2 鍵: Jefe メッセージ: what do ya want for nothing? HMAC-SHA256: 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843 初期値(鍵 mysecretkey、メッセージ The quick brown fox、SHA-256) 0062435a191760a5e4c7b02ebc6f1a08333a97bb2c0ec28b22c93dbfa1006f07
使用上の注意
- WebhookやAPIの署名の検証では、改行や空白が1文字違うだけでも値がまったく変わります。署名の対象になる文字列を正確にそろえてください。
- 鍵を16進数やBase64で渡されている場合は、この計算機では文字列としてUTF-8で扱われるため、結果が一致しません。
- 署名を比べるときは、時間の差から情報がもれないよう、一定時間で比較する関数を使うのが安全です。
よくある質問
HMACとは何ですか?
秘密鍵とハッシュ関数を組み合わせて、メッセージの改ざん検知と送信者の認証を同時に行う仕組みです。APIリクエストの署名やWebhookの検証などに使われます。
この計算は正しいのですか?
RFC 4231で定義されたHMAC-SHA256の公式テストベクタと、Node.jsの標準暗号ライブラリの計算結果の両方と一致することを確認済みです。
通常のハッシュ(SHA-256など)との違いは何ですか?
通常のハッシュは誰でも同じ値を計算できますが、HMACは秘密鍵を持つ人だけが正しい値を計算・検証できるため、認証やメッセージの真正性確認に使えます。