Sviluppatore / Firme

Generatore HMAC (SHA-256, SHA-512)

Genera una firma HMAC per un messaggio e una chiave segreta con SHA-256, SHA-384, SHA-512 o SHA-1, in formato esadecimale e Base64, per testare le firme di webhook e API.

Generatore HMAC (SHA-256, SHA-512): HMAC combina una chiave segreta con un messaggio tramite una funzione hash, così solo chi possiede la chiave può produrre la stessa firma. Il calcolo viene eseguito con la Web Crypto API del tuo browser, la stessa implementazione usata dal browser per HTTPS. È consentita una chiave vuota: viene trattata come una chiave di zero byte, come definito dallo standard HMAC. Funziona al 100% localmente nel browser, senza caricare file sul server.

Esecuzioni
Nel browser
Costo
Gratuito · senza registrazione
Disponibilità
Pronto all'uso
Generatore HMACElaborazione locale

Funziona interamente nel browser

Hex—
Base64—

Il messaggio viene letto come testo UTF-8, esattamente come è stato digitato, inclusi spazi e interruzioni di riga; un carattere di nuova riga finale modifica il risultato. I webhook di servizi come Stripe e GitHub vengono firmati con HMAC-SHA256 in questo modo.

Verificare un webhook

Prendi il corpo grezzo della richiesta prima di qualsiasi analisi, calcola l'HMAC con il segreto condiviso e confrontalo con l'header della firma usando un confronto a tempo costante, così il tempo non rivela quanti caratteri corrispondono. Rifiuta le richieste il cui timestamp risale a più di qualche minuto prima, per impedire i replay.

Per un hash senza chiave, usa il generatore di hash; per i token firmati, usa il decoder JWT.

Chiavi

Una chiave lunga quanto l'output dell'hash, ovvero 32 byte casuali per SHA-256, garantisce la massima robustezza; le chiavi più lunghe vengono prima ridotte tramite hash. Non inserire le chiavi nei repository del codice e ruotale se vengono divulgate.

Come usarlo

  1. Incolla il messaggio esattamente come è stato inviato, ad esempio il corpo grezzo di un webhook.
  2. Inserisci la chiave segreta come testo o valore esadecimale, quindi scegli l'hash.
  3. Confronta il risultato in formato esadecimale o Base64 con la firma ricevuta.

Privacy e limitazioni

Il messaggio e la chiave restano nel browser; non viene inviato nulla.

Strumenti correlati

Domande frequenti

Perché la mia firma non corrisponde a quella del webhook?

Il messaggio firmato deve essere il corpo grezzo, byte per byte: analizzare e serializzare di nuovo il JSON, oppure aggiungere o rimuovere un'interruzione di riga, lo modifica. Alcuni servizi firmano insieme un timestamp e il corpo, ad esempio Stripe usa t=…,payload.

HMAC-SHA1 è ancora sicuro?

Per HMAC è ancora considerato sicuro, a differenza di SHA-1 per il semplice hashing, ma i nuovi sistemi dovrebbero usare HMAC-SHA256.

Formato esadecimale o Base64?

Sono due modi per scrivere gli stessi byte; usa quello mostrato dal servizio. GitHub usa il formato esadecimale con il prefisso sha256=, mentre molti altri servizi usano Base64.

Strumento gratuito · nel browser esecuzioni · senza account