HMAC 署名の生成方法:SHA-256、SHA-1、SHA-512
API リクエスト、Webhook、JWT のための HMAC 署名を生成・検証する方法を学びます。無料ブラウザ内ツール。
HMAC 署名とは?
HMAC(Hash-based Message Authentication Code)は、メッセージの完全性と信頼性を検証する手法です。暗号学的ハッシュ関数(通常 SHA-256)と共有秘密鍵を組み合わせて、入力に対して一意の署名を生成します。メッセージが 1 バイトでも変われば署名も変わります。
HMAC は API 認証、Webhook 検証、JWT 署名、安全な通信プロトコルで広く使われています。通常のハッシュと異なり、HMAC は鍵を要するため、署名を作成・検証できるのは鍵を持つ当事者だけです。
よくある用途
- Webhook 検証:受信リクエストが既知の送信者からのものだと確認する
- API リクエスト署名:サーバーがリクエストを既知のクライアントが発行したものだと検証できるようにする
- JWT 署名:JSON Web Token の署名セグメントを生成する
- ファイル完全性:転送中や保存中の改竄を検出する
- OAuth 1.0a と AWS Signature V4:古典的・現代的なリクエスト署名方式
方法 1:UtilBoxx の無料 HMAC ジェネレーターを使う(推奨)
当社の HMAC 署名ジェネレーター は HMAC-SHA-256、HMAC-SHA-1、HMAC-SHA-512 をサポートし、hex または Base64 を出力します。手順は次のとおりです:
- utilboxx.com/ja/tools/crypto/hmac にアクセス
- メッセージと秘密鍵を入力
- アルゴリズムを選択(既定は SHA-256)
- 出力エンコーディングを選択(hex または Base64)
- ワンクリックで生成された署名をコピー
この方法の長所:
- 完全にブラウザ内で動作 — 鍵は端末から出ない
- 最も一般的な HMAC アルゴリズムに対応
- 入力中にリアルタイム更新
- モバイル対応
- 100% 無料、登録不要、広告なし
方法 2:コマンドラインの OpenSSL を使う
`openssl` コマンドは Linux、macOS、Windows(Git Bash または WSL)で使えます:
```bash echo -n "message" | openssl dgst -sha256 -hmac "mysecretkey" ```
hex エンコードされた HMAC-SHA-256 署名が出力されます。`sha256` を `sha1` や `sha512` に置き換えると他のアルゴリズムになります。
方法 3:言語ライブラリを使う
Node.js の組み込み `crypto` モジュールが HMAC を扱います:
```javascript const crypto = require('crypto'); const hmac = crypto.createHmac('sha256', 'mysecretkey'); hmac.update('message'); console.log(hmac.digest('hex')); ```
Python の場合:
```python import hmac, hashlib print(hmac.new(b"mysecretkey", b"message", hashlib.sha256).hexdigest()) ```
Go の場合:
```go package main import ("crypto/hmac"; "crypto/sha256"; "encoding/hex"; "fmt") func main() { mac := hmac.New(sha256.New, []byte("mysecretkey")) mac.Write([]byte("message")) fmt.Println(hex.EncodeToString(mac.Sum(nil))) } ```
よくある質問
HMAC はデジタル署名と同じですか?
いいえ。HMAC は共有鍵を使いますが、デジタル署名は非対称暗号(公開鍵/秘密鍵)を使います。HMAC の方が高速でシンプルですが、署名を検証する必要があるすべての当事者と鍵を安全に共有する必要があります。
どのハッシュ関数を使うべきですか?
HMAC-SHA-256 が現代の標準です。広く対応し、安全、高速です。HMAC-SHA-1 はレガシーで、古いシステムとの互換性のためだけに使われます。HMAC-SHA-512 は特に機密性の高い用途に高い安全性を提供します。
HMAC 署名は逆算できますか?
いいえ。署名は一方向関数です。攻撃者は署名からメッセージや鍵を復元できませんが、メッセージを推測できる場合は推測を検証できます。長くランダムな鍵を使って安全性を最大化してください。
鍵が漏れたらどうなりますか?
鍵が漏れると、攻撃者はあらゆるメッセージに対して有効な署名を偽造できるようになり、認証が完全に破綻します。HMAC の鍵はパスワードと同様に扱い、安全に保管し、定期的にローテーションし、ソース管理には絶対にコミットしないでください。
結論
HMAC は安全な API とメッセージ完全性の基礎ツールです。ブラウザ内で素早く計算するなら、UtilBoxx の HMAC 署名ツール が最も手軽です。