# Generatore HMAC-SHA256

Create una firma HMAC-SHA256 a partire da un messaggio e da una chiave segreta. Lo strumento codifica entrambi in UTF-8, applica la costruzione HMAC definita in RFC 2104 con SHA-256 e restituisce il tag di 256 bit in formato esadecimale o Base64. Gli sviluppatori lo usano per eseguire il debug delle firme webhook di servizi come Stripe, GitHub o Slack, firmare richieste API e confrontare i risultati con il proprio codice. La chiave non viene mai restituita né registrata nei log.

## Domande frequenti

### Che cos'è HMAC-SHA256?

HMAC-SHA256 è un codice di autenticazione del messaggio basato su SHA-256 e una chiave segreta, come definito in RFC 2104. Solo chi possiede la chiave può calcolare il tag corretto per un messaggio. Il risultato è di 32 byte, ovvero 64 caratteri esadecimali.

### Come verifico una firma webhook?

Incollate il corpo esatto della richiesta grezza come messaggio e il segreto di firma come chiave, quindi confrontate il risultato con l'intestazione della firma. Molti servizi firmano una combinazione, ad esempio il timestamp di Stripe, un punto e il corpo: componete quindi il messaggio secondo le indicazioni della relativa documentazione. Basta modificare un solo byte per ottenere un tag diverso.

### Esiste un vettore di test noto?

Il caso di test 2 di RFC 4231 usa la chiave Jefe e il messaggio what do ya want for nothing?; il risultato atteso è 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843. Questo strumento restituisce esattamente quel valore.

### Come vengono codificati la chiave e il messaggio?

Entrambi vengono codificati come testo UTF-8. Se il segreto è fornito in formato esadecimale o Base64, come accade con alcuni servizi, i byte sono diversi dal testo visualizzato e dovete prima decodificare la chiave nel vostro codice. Gli spazi e le interruzioni di riga vengono conteggiati in entrambi i campi.

### La mia chiave segreta viene memorizzata?

No. La chiave viene usata solo per calcolare il tag durante la richiesta. Non viene inclusa nella risposta, registrata nei log né memorizzata.

### La chiave può essere vuota o molto lunga?

HMAC accetta chiavi di qualsiasi lunghezza, anche vuote. Le chiavi più lunghe di 64 byte vengono prima sottoposte a hash con SHA-256, come specificato nell'RFC. Per un uso reale, scegliete una chiave casuale di almeno 32 byte.

### Dovrei scegliere l'esadecimale o Base64?

Usate il formato inviato dall'altra parte. GitHub e Stripe usano l'esadecimale, mentre Slack antepone v0= ai valori esadecimali e molti sistemi basati su AWS e JWT usano Base64. Entrambi codificano gli stessi 32 byte.

### HMAC-SHA256 equivale a SHA-256 della chiave e del messaggio concatenati?

No. HMAC calcola l'hash del messaggio due volte, usando chiavi interne ed esterne con padding, proteggendo così dagli attacchi di estensione della lunghezza. Concatenare chiave e messaggio e calcolare l'hash una sola volta produce un risultato diverso e meno sicuro.

### Come dovrei confrontare le firme nel mio codice?

Usate una funzione di confronto a tempo costante, come crypto.timingSafeEqual in Node.js o hmac.compare_digest in Python. Un normale confronto tra stringhe può rivelare informazioni temporali sul tag atteso.

### Qual è la dimensione massima del messaggio?

Il messaggio e la chiave insieme possono contenere fino a 5 MiB di testo. È una dimensione sufficiente per i payload webhook tipici e le richieste API.

Il tuo annuncio qui?

[Scrivici](mailto:hi@dennn.is?subject=Pubblicit%C3%A0%20su%20OneClick%20Pro)

[Annuncio La suite di plugin pronta per gli agenti di WordPress.](https://sleekwp.com/?ref=oneclickpro)
