HMAC (Hash-based Message Authentication Code) è una tecnologia di autenticazione dei messaggi ampiamente utilizzata definita in RFC 2104. L'HMAC elabora una chiave insieme a un messaggio attraverso una funzione hash per produrre una firma di lunghezza fissa. A differenza degli hash normali, l'HMAC richiede la conoscenza della chiave per generare o verificare una firma, garantendo sia l'integrità del messaggio che l'autenticità.
**L'HMAC è la base della sicurezza API moderna**. Stripe, GitHub, Shopify, Slack e Twilio usano HMAC-SHA256 per firmare gli eventi webhook, assicurando che le richieste provengano effettivamente dalla piattaforma. AWS usa HMAC-SHA256 per la firma delle richieste Signature V4. L'algoritmo HS256 di JWT è essenzialmente HMAC-SHA256. Comprendere l'HMAC è il primo passo per padroneggiare la sicurezza API.
**Piattaforme diverse hanno formati di firma diversi**: il formato di Stripe è `t=timestamp,v1=hex_signature`, firmando `timestamp.payload`; GitHub usa `X-Hub-Signature-256` con formato `sha256=hex_signature`; Shopify usa `X-Shopify-Hmac-Sha256` con valore codificato in Base64. Questo strumento supporta il parsing e la verifica automatica di questi formati comuni.
**Perché la verifica della firma fallisce?** Il motivo più comune è la mancata corrispondenza del formato del messaggio: la piattaforma potrebbe firmare `timestamp.payload` invece del corpo del messaggio grezzo; o il messaggio contiene ritorni a capo extra; o la firma include un prefisso (come `sha256=`) che deve essere rimosso. Controlla attentamente la documentazione della piattaforma e confronta usando il valore esadecimale grezzo.
Questo strumento usa **Web Crypto API** nativa del browser (SubtleCrypto) per i calcoli HMAC — la stessa libreria crittografica che alimenta HTTPS e TLS. Tutti i calcoli avvengono localmente; chiavi e messaggi non vengono mai inviati a nessun server. Apri il pannello Network degli Strumenti per Sviluppatori del browser per verificare che nessuna richiesta esterna venga effettuata.