Vai al contenuto
🛠️ToolsShed

Generatore HMAC

Genera firme HMAC usando SHA-256/384/512 con messaggio e chiave segreta.

Informazioni sullo strumento

HMAC (Codice di Autenticazione del Messaggio Basato su Hash) è una tecnica crittografica utilizzata per verificare l'integrità e l'autenticità dei dati in transito o a riposo. Combinando una chiave segreta con un messaggio, HMAC produce una firma unica che prova che i dati non sono stati alterati e che solo qualcuno che possiede la chiave segreta avrebbe potuto crearla. Questo lo rende essenziale per proteggere le API, convalidare i webhook, firmare le credenziali e proteggere le comunicazioni sensibili su Internet.

Per utilizzare questo strumento, inserisci il tuo messaggio nel campo di testo e fornisci una chiave segreta che condividi con il destinatario. Scegli l'algoritmo hash (SHA-256, SHA-384 o SHA-512) in base ai tuoi requisiti di sicurezza, quindi fai clic su "Genera HMAC" per produrre la firma. L'hash risultante può essere inviato insieme ai tuoi dati in modo che il destinatario possa verificare l'autenticità generando lo stesso HMAC con la sua copia della chiave segreta.

HMAC è ampiamente utilizzato dai processori di pagamento, dalle API cloud (AWS, Google Cloud, Stripe) e dai sistemi di comunicazione in tempo reale per prevenire manomissioni e confermare l'origine del messaggio. La variante SHA-256 fornisce una sicurezza solida per la maggior parte dei casi d'uso, mentre SHA-384 e SHA-512 offrono margini di sicurezza aggiuntivi per applicazioni altamente sensibili. Ricorda che la sicurezza di HMAC dipende interamente dal mantenimento della riservatezza della tua chiave segreta — non condividerla mai su canali non sicuri.

Domande Frequenti

Implementazione del Codice

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.