tigtools

Generatore HMAC

Calcola un codice di autenticazione del messaggio con chiave (HMAC) usando un messaggio e una chiave segreta, oppure verifica una firma ricevuta. La chiave e il messaggio restano nel browser.

Funziona nel browser Nessuna registrazione

La chiave e il messaggio vengono elaborati solo in questa scheda del browser e non vengono mai inviati altrove. Evita comunque di incollare segreti di produzione attivi su un computer condiviso o non attendibile.
Formato della chiave

Firmato come UTF-8 esattamente come inserito. Uno spazio finale o un'interruzione di riga cambia il risultato.

Formato di output

Incolla una firma in esadecimale (maiuscole o minuscole) o Base64 per confrontarla con il risultato qui sopra.

Come si usa

  1. Inserisci la chiave segreta e scegli se è in testo semplice o in byte esadecimali.
  2. Incolla il messaggio, ad esempio il payload di un webhook esattamente come lo hai ricevuto.
  3. Scegli l’algoritmo e la codifica di output usati dal tuo servizio; l’HMAC si aggiorna mentre scrivi.
  4. Per verificare una firma, incollala nel campo di verifica e controlla che compaia «Corrispondenza».

Come funziona

HMAC (RFC 2104) combina una chiave segreta con una funzione hash per generare una firma che solo chi possiede la chiave può creare. Servizi come webhook e richieste API firmate inviano un HMAC con ogni messaggio, così il destinatario può verificare che il messaggio sia autentico e non sia stato modificato.

Questo strumento usa la Web Crypto API del browser (crypto.subtle.importKey e sign) ed è verificato con i vettori di test RFC 4231 e RFC 2202. La chiave di testo e il messaggio vengono codificati in UTF-8. Una chiave esadecimale viene decodificata in byte grezzi; gli spazi, i due punti e il prefisso 0x iniziale vengono ignorati. HMAC-SHA-256 è la scelta più comune; HMAC-SHA-1 è ancora considerato sicuro come MAC, ma viene usato soprattutto dalle API meno recenti.

Se la firma non corrisponde, controlla i dettagli che più spesso differiscono: i byte esatti del messaggio (molti fornitori di webhook firmano il corpo originale, non il JSON riformattato), un timestamp o un prefisso aggiunto dal fornitore alla stringa firmata, se la chiave va usata come testo o prima decodificata da esadecimale o Base64 e se la firma attesa è in esadecimale o Base64 e include un prefisso come «sha256=», da rimuovere prima del confronto.

Esempi

Caso di test RFC 4231

Con la chiave «Jefe» (testo), il messaggio «what do ya want for nothing?» e HMAC-SHA-256 si ottiene 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843. Usa «Prova un esempio» per caricarlo.

Verificare la firma di un webhook

Un fornitore invia l'intestazione X-Signature: sha256=… con ogni richiesta. Incolla il corpo originale della richiesta come messaggio e il segreto del webhook come chiave, seleziona HMAC-SHA-256 e Hex, quindi incolla nella casella di verifica il valore che segue «sha256=».

Una chiave codificata in esadecimale

Alcuni sistemi forniscono chiavi come stringhe esadecimali, ad esempio 0b0b0b…. Seleziona Hex come formato della chiave affinché lo strumento firmi usando i byte decodificati; trattare la stessa stringa come testo produce un risultato completamente diverso.

Domande frequenti

Qual è la differenza tra un HMAC e un hash semplice?

Chiunque può calcolare l'hash semplice, ad esempio SHA-256, di un messaggio. Un HMAC dipende anche da una chiave segreta, quindi solo chi possiede la chiave può generarlo o verificarlo. In questo modo si dimostra che il messaggio proviene da chi possiede la chiave e che non è stato alterato.

Perché il mio HMAC non corrisponde a quello del server?

Quasi sempre i byte di input sono diversi: interruzioni di riga, spazi vuoti, ordine delle chiavi JSON, codifica dei caratteri oppure una chiave che va decodificata da esadecimale o Base64. Verifica anche di usare lo stesso formato (esadecimale o Base64) e rimuovi prefissi come «sha256=».

La mia chiave segreta viene inviata da qualche parte?

No. La chiave e il messaggio vengono usati solo dalla Web Crypto API in questa scheda del browser. Non vengono caricati, salvati né inclusi nei dati di analisi.

HMAC-SHA-1 è ancora sicuro?

Le collisioni di SHA-1 non compromettono direttamente HMAC-SHA-1, che è ancora accettato per motivi di compatibilità. Per i nuovi sistemi, usa HMAC-SHA-256 o un algoritmo più robusto.

Privacy

La chiave, il messaggio e il risultato sono presenti solo in questa scheda del browser. Non vengono caricati, salvati né inviati ai servizi di analisi; viene registrato solo un evento anonimo che segnala l’uso dello strumento.