DevToolPal
IT

Generatore di codici TOTP / HOTP

Genera codici di autenticazione a due fattori (TOTP e HOTP) da un segreto Base32 o da un URI otpauth://, con SHA-1/256/512, 6–8 cifre e conto alla rovescia in tempo reale.

Eseguito in locale, mai caricato

Opzioni

Tipo
Cifre
Intervallo

Segreto (Base32) o URI otpauth://

Codici

Il risultato apparirà qui

Cosa fa

Le app di autenticazione a due fattori come Google Authenticator, Microsoft Authenticator e 1Password mostrano codici di sei cifre che cambiano ogni 30 secondi. Ogni codice è una password monouso calcolata da un segreto condiviso: TOTP (RFC 6238) usa l’ora, HOTP (RFC 4226) un contatore. Questo strumento calcola gli stessi codici dal segreto, così puoi testare una configurazione 2FA, eseguire il debug di un’implementazione lato server o verificare quale dovrebbe essere un codice.

Mostra il codice attuale con un conto alla rovescia in tempo reale, oltre al codice precedente e al successivo, che i server spesso accettano per coprire piccole differenze di orologio.

Come si usa

  1. Incolla il segreto Base32 (lettere A–Z e cifre 2–7; spazi e maiuscole non contano) oppure un intero URI otpauth:// da un QR code. Fai clic su Esempio per provarlo.
  2. Scegli TOTP o HOTP e imposta algoritmo, cifre e intervallo come nell’account. Le impostazioni di un URI otpauth hanno la precedenza.
  3. Per HOTP, inserisci il contatore e usa Contatore +1 per scorrere i codici.
  4. Copia il codice attuale. Il conto alla rovescia indica per quanto resta valido.

Esempio

Il segreto dimostrativo JBSWY3DPEHPK3PXP è la forma Base32 dei byte “Hello!” seguiti da 0xDEADBEEF. L’URI qui sotto, così come è codificato in un QR code, descrive un account che lo usa con le impostazioni predefinite:

otpauth://totp/Example:alice@example.com?secret=JBSWY3DPEHPK3PXP&issuer=Example&algorithm=SHA1&digits=6&period=30

Al tempo Unix 1700000000 questo segreto dà il codice 324 550 e alla finestra restano 10 secondi.

Come viene calcolato il codice

Il segreto viene decodificato da Base32 in byte. Per TOTP il contatore è il tempo Unix in secondi diviso per l’intervallo e arrotondato per difetto. Il contatore viene scritto su 8 byte e firmato con HMAC usando il segreto. Il troncamento dinamico sceglie 4 byte dell’output HMAC in base al suo ultimo nibble, e il numero viene ridotto alle cifre richieste mantenendo gli zeri iniziali.

Domande frequenti

› Perché il mio codice non corrisponde a quello dell’app di autenticazione?

I codici TOTP dipendono dall’orologio: controlla prima che l’ora del dispositivo sia impostata automaticamente. Poi verifica che algoritmo, cifre e intervallo corrispondano all’account. La maggior parte dei servizi usa SHA-1, 6 cifre e 30 secondi, e le app di autenticazione ignorano altre impostazioni a meno che il QR code non le indichi.

› Che differenza c’è tra TOTP e HOTP?

TOTP (RFC 6238) usa come contatore l’ora attuale divisa per l’intervallo, quindi il codice cambia ogni 30 secondi. HOTP (RFC 4226) usa un contatore che aumenta di uno a ogni codice usato. Entrambi passano segreto e contatore in HMAC e tengono le ultime 6–8 cifre.

› Il mio segreto viene salvato o inviato da qualche parte?

No. I codici vengono calcolati nel browser con la Web Crypto API. Il segreto non viene salvato, non finisce nella barra degli indirizzi e non è incluso nei link di condivisione; un link condiviso contiene solo le impostazioni. Un segreto 2FA dà comunque pieno accesso al secondo fattore, quindi incolla solo segreti tuoi.

› Posso usarlo per aggiungere l’autenticazione a due fattori alla mia app?

Sì. Fai clic su Segreto casuale per creare un segreto Base32 a 160 bit, inseriscilo in un URI otpauth:// o in un QR code per i tuoi utenti e confronta i codici prodotti dal server con quelli mostrati qui. I server di solito accettano anche il codice precedente e il successivo per tollerare differenze di orologio.