DevTools Japan トップへ

HMAC生成ツール

メッセージと秘密鍵からHMAC-SHA1/SHA-256/SHA-512を計算

入力

HMAC(16進数 / hex)
メッセージと秘密鍵を入力してください
16進数(hex)
-
Base64
-
HMACの計算はすべてお使いのブラウザ内(Web Crypto API・crypto.subtle.sign)で実行され、メッセージや秘密鍵が外部に送信されることはありません。メッセージと鍵はUTF-8としてエンコードして計算します。新規の用途ではSHA-256以上の利用を推奨します。

HMAC生成ツールの使い方

「メッセージ」欄に署名したいデータを、「秘密鍵」欄に送信者と受信者で共有するシークレットキーを入力すると、HMAC(ハッシュベースのメッセージ認証コード)を自動で計算します。ハッシュアルゴリズムはHMAC-SHA256(既定)・HMAC-SHA1・HMAC-SHA512から選べ、結果を16進数(hex)とBase64の両方で同時に表示します。インストールや会員登録は不要で、計算はすべてブラウザ内で完結します。

入力を変更するたびにリアルタイムで再計算されるので、APIリクエストの署名づくりや、Webhookの署名検証のデバッグにそのまま使えます。生成された値は各欄の「コピー」ボタンでクリップボードにコピーできます。メッセージと秘密鍵はUTF-8としてバイト列に変換したうえでHMACを計算します。

こんな用途に

REST APIのリクエスト署名の生成・検証、GitHubやStripeなどのWebhookペイロードの署名照合、トークンやメッセージの改ざん検知、簡易的なメッセージ認証の学習・実験などにお使いいただけます。秘密鍵を含む機密データでも、ネットワークに送られずローカルで処理されるため安心して試せます。

HMACの仕組み

HMACは、メッセージと秘密鍵を決められた手順で組み合わせ、SHA-256などのハッシュ関数を2段階で適用して固定長の値を得るアルゴリズムです(RFC 2104で定義)。鍵を知っている人だけが正しいHMACを計算できるため、値が一致すれば「メッセージが改ざんされていない(完全性)」ことと「正しい鍵の持ち主が作った(真正性)」ことを同時に検証できます。単純なハッシュ値と違い、秘密鍵がないと正しい値を偽造できない点が特徴です。

アルゴリズム出力長用途の目安
HMAC-SHA1160ビット(hex 40文字)互換性目的のみ。新規設計では非推奨
HMAC-SHA256256ビット(hex 64文字)一般的な用途で推奨。多くのAPIの標準
HMAC-SHA512512ビット(hex 128文字)より長い出力が必要な高強度用途

hexとBase64の違い

HMACの結果は生のバイト列で、そのままでは扱いにくいため、テキストとして表現する際に16進数(hex)またはBase64が使われます。hexは1バイトを2文字の16進数で表す方式で、多くのAPI署名やHTTPヘッダーで小文字表記が使われます。Base64は3バイトを4文字で表す、より短いエンコード方式で、一部のクラウドサービスやWebhook署名で採用されます。どちらも同じHMACを表しているので、利用先の仕様に合わせて選んでください。

よくある質問

HMACとは何ですか?
HMAC(Hash-based Message Authentication Code)は、メッセージと秘密鍵を組み合わせてハッシュ関数で計算する、メッセージ認証コードです。送信者と受信者が同じ秘密鍵を共有していれば、受信側で同じHMACを計算し直すことで、メッセージが改ざんされていないこと(完全性)と、正しい鍵の持ち主が作ったこと(真正性)を検証できます。APIリクエストの署名やWebhookの検証などで広く使われています。
どのハッシュアルゴリズムに対応していますか?
HMAC-SHA1、HMAC-SHA256、HMAC-SHA512の3種類に対応しています。新規の用途ではSHA-256以上を推奨します。SHA-1は互換性のために残していますが、衝突耐性の観点から安全性が低下しているため、新しい設計では避けてください。出力は16進数(hex)とBase64の両方を同時に表示します。
入力したデータはサーバーに送信されますか?
いいえ。HMACの計算はすべてお使いのブラウザ内でWeb Crypto API(crypto.subtle.sign)を使って実行され、メッセージや秘密鍵が外部サーバーに送信されることはありません。秘密鍵を含む機密性の高いデータでも、ネットワークに送られずローカルで完結します。
hexとBase64のどちらを使えばよいですか?
利用先の仕様に合わせてください。多くのHTTPヘッダーやAPI署名では16進数(hex)の小文字表記が使われます。一方、AWSの一部やWebhookの署名などではBase64が指定される場合があります。本ツールは両方を同時に出力するので、必要な形式をコピーしてご利用ください。
同じ入力なら必ず同じ結果になりますか?
はい。HMACは決定的な計算なので、同じメッセージ・同じ秘密鍵・同じアルゴリズムであれば、いつ計算しても必ず同じ値になります。この性質を利用して、受信側で再計算した値と送られてきた署名を比較することで、改ざんの有無を検証します。逆に一文字でも入力が変われば、結果は大きく変化します。

関連ツール

SHA-256ハッシュ生成Base64エンコードUUID生成