Generatore di HMAC
Firma un messaggio con una chiave segreta. Non viene trasmesso nulla.
- Funziona nel tuo browser — il tuo testo non viene mai inviato da nessuna parte
- Nessuna registrazione, nessuna quota, gratis da usare quante volte vuoi
Come funziona
Un HMAC dimostra due cose insieme: che un messaggio non è stato alterato e che chi lo ha prodotto possiede il segreto condiviso. È ciò che firma webhook, richieste API e link di download in gran parte del web.
Diverso da un semplice hash, in ciò che conta
Chiunque può calcolare lo SHA-256 di un messaggio, quindi un hash semplice non dimostra nulla su chi lo ha creato: si cambia il messaggio, si ricalcola l'hash e nessuno se ne accorge. Un HMAC inserisce una chiave segreta nel calcolo, quindi non può essere ricalcolato senza la chiave. È tutto lì il punto, ed è il motivo per cui le firme dei webhook usano HMAC e non un hash.
Verificare in sicurezza
Quando controlli un HMAC su un server, confrontalo con una funzione a tempo costante — crypto.timingSafeEqual in Node, hash_equals in PHP. Un normale == restituisce il risultato appena due byte differiscono, e il tempo impiegato rivela quanta parte della firma era giusta, il che basta per falsificarne una con un po' di pazienza. È un attacco reale, non teorico.
Quale algoritmo
SHA-256, a meno che qualcosa non specifichi altro. SHA-1 è incluso perché molte API più vecchie richiedono ancora HMAC-SHA-1, e HMAC-SHA-1 non è stato compromesso come lo SHA-1 semplice — ma non c'è motivo di sceglierlo per qualcosa di nuovo.
Esadecimale o Base64
Dipende solo da ciò che si aspetta l'altra parte. L'esadecimale è lungo il doppio e più facile da leggere; Base64 è più compatto e comune negli header HTTP. La stessa firma viene mostrata in entrambi.
La tua chiave resta qui
Generato con la Web Crypto API del browser. La chiave e il messaggio non vengono mai inviati da nessuna parte, che è l'unico modo responsabile di offrire questo strumento — uno strumento di firma che carica il tuo segreto ha consegnato proprio ciò che il segreto protegge.
Generatore di HMAC — domande
In cosa un HMAC è diverso da un hash?
Un hash può essere ricalcolato da chiunque. Un HMAC richiede la chiave segreta, quindi dimostra chi lo ha prodotto.
Quale algoritmo devo usare?
SHA-256, a meno che un'API non indichi altro. SHA-1 è disponibile per i sistemi più vecchi che lo richiedono ancora.
Devo usare esadecimale o Base64?
Quello che si aspetta l'altra parte. Per la stessa firma vengono mostrati entrambi.
Perché il confronto deve avvenire in tempo costante?
Un confronto normale termina subito al primo carattere diverso, e la differenza di tempo rivela quanta parte era corretta — abbastanza per falsificare una firma.
La mia chiave segreta viene inviata da qualche parte?
No. Tutto viene eseguito nel tuo browser tramite la Web Crypto API.