コンテンツへスキップ
🛠️ToolsShed

HMAC ジェネレーター

SHA-256/384/512を使ってHMAC署名を生成します。

このツールについて

HMAC(Hash-based Message Authentication Code)は、データの整合性と真正性を検証するために使用される暗号化技術です。秘密鍵とメッセージを組み合わせることで、HMACは一意の署名を生成し、データが改ざんされていないこと、および秘密鍵を持つ人物だけがそれを作成できたことを証明します。これにより、API の保護、ウェブフック検証、認証情報の署名、およびインターネット上の機密通信の保護に不可欠となります。

このツールを使用するには、メッセージをテキストフィールドに入力し、受信者と共有する秘密鍵を提供してください。セキュリティ要件に基づいてハッシュアルゴリズム(SHA-256、SHA-384、またはSHA-512)を選択し、「Generate HMAC」をクリックして署名を生成します。結果のハッシュはデータとともに送信でき、受信者は秘密鍵のコピーを使用して同じHMACを生成することで真正性を検証できます。

HMACは、決済処理業者、クラウドAPI(AWS、Google Cloud、Stripe)、およびリアルタイム通信システムによって広く使用されており、改ざんを防ぎメッセージの発信元を確認します。SHA-256バリアントはほとんどのユースケースに対して強力なセキュリティを提供し、SHA-384とSHA-512は非常に機密性の高いアプリケーション向けの追加セキュリティマージンを提供します。HMACのセキュリティは秘密鍵を秘密に保つことにかかっているため、安全でないチャネルで共有しないでください。

よくある質問

コード実装

import hmac
import hashlib
import base64
import secrets

# Generate HMAC-SHA256
key = secrets.token_bytes(32)   # 256-bit random key
message = "Hello, World!"

# Raw hex output
mac = hmac.new(key, message.encode(), hashlib.sha256)
print("HMAC-SHA256 (hex):", mac.hexdigest())

# Base64 output (common for API signatures)
mac_b64 = base64.b64encode(mac.digest()).decode()
print("HMAC-SHA256 (b64):", mac_b64)

# HMAC-SHA512
mac512 = hmac.new(key, message.encode(), hashlib.sha512)
print("HMAC-SHA512 (hex):", mac512.hexdigest())

# Constant-time verification (prevents timing attacks)
def verify_hmac(key: bytes, message: str, expected: str) -> bool:
    computed = hmac.new(key, message.encode(), hashlib.sha256).hexdigest()
    return hmac.compare_digest(computed, expected)

signature = mac.hexdigest()
print("Valid:  ", verify_hmac(key, message, signature))   # True
print("Invalid:", verify_hmac(key, "tampered", signature)) # False

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.