HMAC生成ツール

メッセージと秘密の鍵を入力すると、4つのハッシュ関数によるHMACを16進数とBase64で表示します。計算はすべてお使いのブラウザの中で行われます。

無料 ブラウザで動作 2026年11月10日火曜日確認済み

認証したいデータです。文字列はUTF-8として、入力どおりに読み取ります。16進数やBase64のデータはバイト列として読み取ります。

メッセージの形式

メッセージをどの形式で書いたかを選びます。

秘密の鍵です。同じ鍵を持つ人だけが同じHMACを作れるため、他人に見せないでください。

鍵の形式

鍵をどの形式で書いたかを選びます。Base64では、JWKの「k」の値に使われるURL安全なアルファベットも読み取ります。

結果

HMACの値

このツールはブラウザ内で動作します。入力した内容が当社に送信されることはありません。

使い方

  1. メッセージにデータを入力します。バイナリのデータは、メッセージの形式で16進数かBase64を選んでください。
  2. 秘密の鍵を鍵に入力し、鍵の形式で書き方を選びます。
  3. HMACの値の4行を読みます。必要な値をコピーするか、使っているシステムの値と比べてください。
  4. 他のシステムと値が違う場合は、まずバイト列を確かめてください。改行コードや文字コードが違うと、HMACも変わります。

HMACとは

HMAC(RFC 2104)は、メッセージ認証コードです。秘密の鍵を知っている人だけが作れる短い値です。通常のハッシュ関数Hを、メッセージと鍵に対して2回使って作ります。そのため、同じハッシュ関数を表の4行で使えます。鍵が必要なので、HMACが一致すれば、メッセージが変更されておらず、鍵を持つ人から来たことが示せます。

HMACはメッセージを隠しません。メッセージを持つ人なら誰でも読めます。HMACは、そのメッセージが正しいかを確かめさせるだけです。

HMAC(K, m) = H((K XOR opad) || H((K XOR ipad) || m))

ipad = 0x36のバイトをB回繰り返したもの
opad = 0x5CのバイトをB回繰り返したもの
B    = Hのブロック長:SHA-1とSHA-256は64バイト、SHA-384とSHA-512は128バイト

使うハッシュ関数と鍵

HMAC-SHA-256が一般的な選択で、多くのWebhookやAPIが使っています。HMAC-SHA-512は同じ仕組みで出力が長いものです。HMAC-SHA-1は古いシステムには残っていますが、新しい設計では選びません。

鍵はランダムで、少なくともハッシュの出力と同じ長さが望ましいです。単語や短い文を鍵にすると推測されやすく、推測された鍵のHMACには価値がなくなります。

16進数とBase64

どちらの形式も同じバイト列を表します。16進数は1バイトを2桁で書くため、SHA-256は64桁になります。Base64は3バイトを4文字で書くため、SHA-256は44文字になり、その最後は詰め物の=です(RFC 4648)。

  • HMAC-SHA-1:16進数40桁、Base64 28文字
  • HMAC-SHA-256:16進数64桁、Base64 44文字
  • HMAC-SHA-384:16進数96桁、Base64 64文字
  • HMAC-SHA-512:16進数128桁、Base64 88文字

計算例:RFC 4231のテストケース2

鍵をJefe、メッセージをwhat do ya want for nothing?とすると、SHA-256、SHA-384、SHA-512についてはRFC 4231の2番目のテストケース、SHA-1についてはRFC 2202のテストケースです。下の表は、このページが示す値です。HMAC-SHA-256の値は、RFCが載せている5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843と同じです。

アルゴリズム 16進数 Base64
HMAC-SHA-1 effcdf6ae5eb2fa2d27416d5f184df9c259a7c79 7/zfauXrL6LSdBbV8YTfnCWafHk=
HMAC-SHA-256 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843 W9zBRr9gdU5qBCQmCJV1x1oAPwidJzmDnexYuWTsOEM=
HMAC-SHA-384 af45d2e376484031617f78d2b58a6b1b9c7ef464f5a01b47e42ec3736322445e8e2240ca5e69e2c78b3239ecfab21649 r0XS43ZIQDFhf3jStYprG5x+9GT1oBtH5C7Dc2MiRF6OIkDKXmnix4syOez6shZJ
HMAC-SHA-512 164b7a7bfcf819e2e395fbe73b56e0a387bd64222e831fd610270cd7ea2505549758bf75c05a994a6d034f65f8f0e6fdcaeab1a34d4a6b4b636e070a38bce737 Fkt6e/z4GeLjlfvnO1bgo4e9ZCIugx/WECcM1+olBVSXWL91wFqZSm0DT2X48Ob9yuqxo01Ka0tjbgcKOLznNw==

よくある質問

HMACはメッセージを暗号化することと同じですか?

いいえ。HMACはメッセージを隠さないため、誰でも読めます。HMACが示すのは、メッセージが変更されていないことと、送り手が鍵を知っていることだけです。秘密を守るには暗号化が必要です。

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

ハッシュはメッセージだけで決まるため、誰でも計算できます。HMACは秘密の鍵も必要とするため、鍵を持つ人だけが作成や検証をできます。鍵を使わない単純なハッシュ値は、ハッシュ生成ツールで計算できます。

ライブラリの値と、このページのHMACが違うのはなぜですか?

鍵かメッセージのバイト列が違うためです。文字列として入力した鍵は、そのUTF-8のバイト列になり、同じ文字を16進数で書いた鍵は別のバイト列になります。メッセージの末尾の改行も、HMACを変えます。

鍵の長さはどのくらいにすればよいですか?

ハッシュの出力と同じ長さ以上のランダムな鍵を使ってください。HMAC-SHA-256なら32バイトです。RFC 2104は短い鍵を強く非推奨としており、単語や短い文から作った鍵は推測されやすくなります。

このページでWebhookの署名を確かめられますか?

署名されたものとまったく同じバイト列を使えば確かめられます。WebhookのHMACは、たいてい加工されていないリクエストの本文に対して計算されるため、本文は変えずに貼り付けてください。整形し直したJSONの本文では、HMACが変わります。

入力した鍵やメッセージは、どこかに送られますか?

いいえ。HMACはお使いのブラウザ自身のSubtleCryptoを使って、ブラウザの中で計算されます。鍵もメッセージもアップロードされず、保存もされません。

出典

数値と文章の最終確認日:2026年11月10日火曜日。

当サイトの運営に必要なCookieを使用します。お客様の同意があれば、Googleは広告用Cookieを使い、パーソナライズ広告を表示します。拒否された場合も広告は表示されますが、パーソナライズはされません。