Skip to content

Generatore di Codici TOTP / 2FA

Genera un codice TOTP/2FA da un segreto Base32 — 100% nel tuo browser, il segreto non lascia mai il dispositivo. Configurazione QR + verifica del codice.

Niente tracciamento Funziona nel browser Gratuito
Calcolato localmente nel tuo browser — il segreto non lascia mai il tuo dispositivo.
Opzioni avanzate
Codice corrente
------
Codice successivo: ------
Segue il comportamento di RFC 6238 / RFC 4226 con output verificato in modo incrociato rispetto ai vettori di test pubblicati e a un'app autenticatore indipendente — Team Sicurezza Go Tools · Jun 12, 2026

Cos'è un Generatore di Codici TOTP / 2FA?

Un generatore TOTP trasforma un segreto condiviso nel codice monouso rotante che alimenta l'autenticazione a due fattori. Il TOTP — Time-based One-Time Password, definito in RFC 6238 — prende un segreto Base32 e l'ora corrente, divide il tempo in intervalli fissi (30 secondi per impostazione predefinita), ed esegue un HMAC sul contatore degli intervalli per derivare un breve codice numerico. Poiché sia la tua app autenticatore sia il server detengono lo stesso segreto e leggono lo stesso orologio, calcolano il codice identico senza mai scambiarselo sulla rete. È proprio questo il senso della 2FA: anche se la tua password trapela, un aggressore ha comunque bisogno del codice che solo il tuo segreto può produrre in questo momento.

"The TOTP algorithm is a time-based variant of the HOTP algorithm... TOTP = HOTP(K, T), where T is an integer representing the number of time steps between the initial counter time T0 and the current Unix time." — RFC 6238, Section 4

Questo strumento svolge tre compiti in un'unica pagina. Genera un codice in tempo reale da qualsiasi segreto Base32 con un conto alla rovescia e un'anteprima del codice successivo; configura un segreto nuovo di zecca, creando l'URI otpauth:// e il codice QR che scansioni in un'app autenticatore; e verifica un codice rispetto a un segreto con una tolleranza di ±1 intervallo di tempo, replicando il modo in cui i server reali accettano un codice appena ruotato. Tutto viene eseguito tramite la Web Crypto API nativa del browser, con zero dipendenze e zero chiamate di rete.

Gli sviluppatori ricorrono costantemente a un generatore TOTP: per riprodurre il codice esatto mostrato dall'app di un utente mentre fanno il debug di un accesso 2FA, per generare un segreto e un QR per un nuovo account, per confermare che una finestra di verifica sul server corrisponda a ciò che sperimentano gli utenti, o per costruire fixture deterministiche per test end-to-end di un flusso a due fattori. Poiché il segreto è una chiave di lunga durata — chiunque la possieda può generare ogni codice futuro — va protetto come una password. Abbina questo strumento al nostro generatore di password casuali per le password robuste e i codici di recupero che accompagnano la 2FA, e al generatore di codici QR quando ti serve un'immagine di registrazione autonoma. Per firmare i JSON Web Token che spesso viaggiano sopra una sessione autenticata, vedi l'encoder JWT.

// Generate a TOTP code in the browser with the Web Crypto API
// (SHA-1, 6 digits, 30s period — RFC 6238 defaults)
async function generateTotp(base32Secret, time = Date.now()) {
  // Decode the Base32 secret to raw bytes (A-Z, 2-7)
  const alpha = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';
  let bits = '';
  for (const c of base32Secret.replace(/=+$/, '').toUpperCase())
    bits += alpha.indexOf(c).toString(2).padStart(5, '0');
  const bytes = new Uint8Array(
    bits.match(/.{8}/g).map((b) => parseInt(b, 2)));

  // Counter = number of 30s steps since the Unix epoch (8-byte big-endian)
  const counter = Math.floor(time / 1000 / 30);
  const msg = new Uint8Array(8);
  let c = counter;
  for (let i = 7; i >= 0; i--) { msg[i] = c & 0xff; c = Math.floor(c / 256); }

  const key = await crypto.subtle.importKey(
    'raw', bytes, { name: 'HMAC', hash: 'SHA-1' }, false, ['sign']);
  const hmac = new Uint8Array(await crypto.subtle.sign('HMAC', key, msg));

  // Dynamic truncation (RFC 4226) -> 6-digit code
  const off = hmac[hmac.length - 1] & 0x0f;
  const bin = ((hmac[off] & 0x7f) << 24) | (hmac[off + 1] << 16) |
              (hmac[off + 2] << 8) | hmac[off + 3];
  return (bin % 1_000_000).toString().padStart(6, '0');
}

const code = await generateTotp('JBSWY3DPEHPK3PXP');
// -> a 6-digit code that rotates every 30 seconds

Caratteristiche Principali

Codice in Tempo Reale con Conto alla Rovescia

Incolla un segreto Base32 e il codice TOTP corrente appare all'istante con un anello di conto alla rovescia di 30 secondi e un'anteprima del codice successivo — nessun pulsante Genera, nessuna attesa.

Configurazione Segreto e QR

Genera un segreto Base32 casuale, poi ottieni l'URI otpauth:// e un codice QR da scansionare direttamente in Google Authenticator, Authy o 1Password.

Verificatore di Codici Integrato

Controlla un codice rispetto a un segreto con la stessa tolleranza di ±1 intervallo di tempo usata dai server reali, così che un codice appena ruotato venga comunque convalidato.

Algoritmo e Cifre Configurabili

Passa tra SHA-1, SHA-256 e SHA-512, scegli 6 o 8 cifre, e imposta un periodo di 30s o 60s per corrispondere ai requisiti di qualsiasi provider.

Il Segreto Non Lascia Mai il Browser

Ogni codice viene calcolato localmente tramite la Web Crypto API nativa. Nulla viene caricato, registrato o archiviato — in modo verificabile, anche offline.

Zero Dipendenze

Costruito solo sulla Web Crypto API del browser — nessuna libreria di terze parti, nessuna telemetria e nessuna chiamata di rete di alcun tipo.

Esempi del Generatore TOTP

TOTP Standard a 6 Cifre (SHA-1, 30s)

secret: JBSWY3DPEHPK3PXP
algorithm: SHA-1
digits: 6
period: 30s
Code: 282760  ·  expires in 30s

Il segreto di test canonico di RFC 6238 con le impostazioni predefinite che usano tutte le app principali — SHA-1, 6 cifre, periodo di 30 secondi. Il codice è basato sul tempo, quindi il valore esatto dipende dall'ora corrente; lo strumento mostra un conto alla rovescia in tempo reale e il codice successivo.

TOTP Aziendale a 8 Cifre (SHA-256)

secret: JBSWY3DPEHPK3PXP
algorithm: SHA-256
digits: 8
period: 30s
Code: 31094217  ·  expires in 30s

Alcuni sistemi aziendali e ad alta sicurezza emettono codici a 8 cifre firmati con SHA-256 anziché con l'impostazione predefinita SHA-1. Fai corrispondere esattamente l'algoritmo, il numero di cifre e il periodo a ciò che si aspetta il tuo server, altrimenti il codice generato non verrà convalidato.

URI di Configurazione otpauth:// per App Autenticatore

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

Lo strumento crea un URI otpauth:// standard e lo rende come codice QR. Scansionalo con Google Authenticator, Authy o 1Password — oppure incolla direttamente l'URI — per registrare il segreto sul tuo dispositivo.

Come Usare il Generatore TOTP

  1. 1

    Incolla un Segreto Base32

    Nella scheda Genera, incolla il tuo segreto Base32 (per esempio JBSWY3DPEHPK3PXP). Il codice TOTP corrente appare all'istante con un conto alla rovescia di 30 secondi — nessun pulsante Genera.

  2. 2

    Regola le Opzioni Avanzate (facoltativo)

    Apri le opzioni avanzate per cambiare l'algoritmo (SHA-1/256/512), il numero di cifre (6 o 8), o il periodo (30 o 60s) per corrispondere a ciò che il tuo provider ha emesso.

  3. 3

    Configura o Verifica

    Usa la scheda Configura per generare un segreto e un QR per un'app autenticatore, o la scheda Verifica per controllare un codice rispetto a un segreto con tolleranza di ±1 intervallo di tempo.

Errori Comuni

Algoritmo o Cifre Non Corrispondenti

Un segreto emesso per SHA-256 o 8 cifre produce un codice completamente diverso con i valori predefiniti SHA-1 / 6 cifre. Fai corrispondere esattamente i parametri del provider.

✗ Errato
secret + SHA-1/6 digits  // but server expects SHA-256/8
✓ Corretto
algorithm: SHA-256, digits: 8  // match the otpauth:// URI

Deriva dell'Orologio

Se l'orologio del dispositivo è sfasato di più di un intervallo di tempo, il codice non verrà convalidato. Sincronizza l'orologio di sistema prima di confrontare i codici.

✗ Errato
system clock 90s fast  // code is two steps ahead
✓ Corretto
enable NTP / automatic time  // code aligns with server

Segreto Base32 Non Valido

Base32 usa solo A–Z e 2–7. Gli spazi di una chiave stampata vanno bene, ma uno 0, un 1 o un 8 non sono Base32 validi e falliranno la decodifica.

✗ Errato
secret: "JBSW 0NE8"  // contains 0 and 8
✓ Corretto
secret: "JBSWY3DPEHPK3PXP"  // valid Base32

Casi d'Uso Comuni

Debug di un Flusso di Accesso 2FA
Riproduci il codice esatto mostrato dall'app autenticatore di un utente, così da poter rintracciare il motivo per cui un accesso a due fattori viene rifiutato.
Registra un Nuovo Account
Genera un nuovo segreto Base32 e codice QR, poi scansionalo in Google Authenticator, Authy o 1Password per configurare la 2FA.
Convalida la Finestra del Tuo Server
Verifica i codici rispetto a un segreto per confermare che il tuo backend accetti un codice appena ruotato e rifiuti quello scaduto.
Costruisci Fixture per Test End-to-End
Calcola codici TOTP deterministici da un segreto noto per guidare i test automatizzati di un flusso di autenticazione a due fattori.
Allinea le Impostazioni Aziendali
Riproduci codici a 8 cifre o SHA-256 quando un provider si discosta dai valori predefiniti SHA-1 / 6 cifre, per fare il debug di una discrepanza.
Recupera l'Accesso Rapidamente
Genera il codice corrente da un segreto di backup quando il telefono non è disponibile — usando una copia usa e getta del segreto.

Dettagli Tecnici

Conforme a RFC 6238 / RFC 4226
Implementa il TOTP secondo RFC 6238 sopra l'algoritmo di troncamento dinamico HOTP di RFC 4226, con SHA-1, SHA-256 e SHA-512 selezionabili.
HMAC Web Crypto Nativo
I codici sono derivati tramite HMAC di crypto.subtle sul contatore degli intervalli di tempo big-endian. La decodifica Base32 e il troncamento vengono eseguiti interamente nel browser.
URI otpauth:// Standard, Zero Dipendenze
Gli URI di configurazione seguono il Key Uri Format (otpauth://totp) con parametri di emittente, algoritmo, cifre e periodo. Nessuna libreria esterna, nessuna chiamata di rete.

Best Practice

Tratta il Segreto Come una Password
Chiunque abbia il segreto Base32 può generare ogni codice futuro. Conservalo in un gestore di segreti, mai nel controllo di versione, e qui preferisci segreti di test.
Mantieni gli Orologi Sincronizzati
Il TOTP dipende da un'ora accurata. Abilita la sincronizzazione dell'ora di rete su server e dispositivi così che i codici si allineino entro la finestra di verifica.
Attieniti ai Valori Predefiniti Salvo Necessità
SHA-1, 6 cifre e un periodo di 30 secondi massimizzano la compatibilità delle app. Passa a 8 cifre o SHA-256/512 solo quando il tuo provider lo impone.

FAQ del Generatore TOTP / 2FA

È sicuro usare un generatore TOTP / 2FA online?
Con questo sì — e il motivo è che nulla lascia mai il tuo browser. Il segreto Base32 che digiti, l'URI otpauth:// e il codice generato vengono tutti calcolati localmente con la Web Crypto API nativa. Non ci sono richieste di rete, né log, né archiviazione, né analisi legate al tuo input — puoi verificarlo disconnettendoti da internet e osservando lo strumento continuare a funzionare. È l'opposto di un generatore sospetto che invia il tuo segreto a un server tramite POST, dove l'operatore potrebbe generare i tuoi codici per sempre. Un segreto TOTP è una chiave condivisa di lunga durata, quindi l'abitudine più sicura resta preferire segreti usa e getta o di test quando devi solo fare esperimenti.
Cos'è il TOTP e cos'è un segreto Base32?
Il TOTP (Time-based One-Time Password, definito in RFC 6238) è l'algoritmo dietro i codici rotanti a 6 cifre nelle app di autenticazione. Combina un segreto condiviso con l'ora corrente, divisa in intervalli fissi (di solito 30 secondi), attraverso un HMAC per produrre un codice breve che sia il tuo dispositivo sia il server possono calcolare in modo indipendente. Il segreto è la chiave condivisa, ed è quasi sempre scritto in Base32 — lettere maiuscole A–Z e cifre 2–7 — perché quell'alfabeto non distingue tra maiuscole e minuscole ed è facile da digitare o codificare in un codice QR. La stringa JBSWY3DPEHPK3PXP è il noto segreto di test di RFC.
Perché il codice generato è diverso da quello dell'app autenticatore sul mio telefono?
Quattro elementi devono corrispondere affinché due codici TOTP coincidano. Primo, l'orologio: il TOTP dipende dall'ora corrente, quindi se l'orologio del computer o del telefono è sfasato di più di un intervallo, i codici divergono — sincronizza l'orologio di sistema e riprova. Secondo, l'algoritmo: questo strumento usa SHA-1 come predefinito (ciò che usa la maggior parte delle app), ma se il tuo segreto è stato emesso per SHA-256 o SHA-512 devi selezionarlo anche qui. Terzo, le cifre e il periodo: 6 contro 8 cifre, o una finestra di 30s contro 60s, producono codici completamente diversi. Quarto, il segreto stesso — un solo carattere Base32 digitato male cambia ogni codice. Allinea tutti e quattro e i codici corrisponderanno.
Qual è la differenza tra TOTP e HOTP?
Entrambi provengono dalla stessa famiglia di password monouso basate su HMAC, ma differiscono per ciò che determina il codice. L'HOTP (RFC 4226) è basato su contatore: ogni codice è legato a un contatore incrementale, quindi un codice resta valido finché non viene usato e il contatore avanza. Il TOTP (RFC 6238) è basato sul tempo: sostituisce il contatore con l'ora corrente divisa in intervalli fissi, così i codici ruotano automaticamente ogni 30 secondi. Il TOTP è in realtà solo un HOTP con il contatore impostato sul numero di intervalli di tempo trascorsi dall'epoca Unix. Questo strumento genera TOTP, che è ciò che Google Authenticator, Authy e 1Password usano per impostazione predefinita.
Posso usare codici a 8 cifre o SHA-256 / SHA-512?
Sì. Apri le opzioni avanzate per cambiare l'algoritmo in SHA-256 o SHA-512, impostare le cifre a 8, o cambiare il periodo a 60 secondi. Questi parametri esistono perché alcuni sistemi aziendali e bancari richiedono codici più lunghi o hash più robusti. Detto questo, la stragrande maggioranza dei servizi — e ogni app di autenticazione consumer mainstream — usa i valori predefiniti di SHA-1, 6 cifre e periodo di 30 secondi, quindi lasciali invariati a meno che le istruzioni di configurazione del tuo provider non indichino diversamente. Qualunque cosa tu scelga, l'URI otpauth:// che lo strumento genera registra quei parametri in modo che la tua app registri il segreto correttamente.
Come aggiungo questo segreto a Google Authenticator, Authy o 1Password?
Passa alla scheda Configura per generare (o incollare) un segreto, poi scansiona il codice QR oppure copia l'URI otpauth://. In Google Authenticator o Authy, tocca il pulsante di aggiunta e scegli Scansiona un codice QR per puntare la fotocamera sul QR a schermo, oppure scegli Inserisci una chiave di configurazione e incolla il segreto Base32 con il nome account e l'algoritmo corrispondenti. In 1Password, modifica un elemento di accesso, aggiungi un campo One-Time Password e incolla direttamente l'URI otpauth://. Ti serve un'immagine QR autonoma per la documentazione? Usa il nostro generatore di codici QR, e per i segreti casuali e i codici di recupero che lo accompagnano, il generatore di password casuali.

Strumenti correlati

Vedi tutti gli strumenti →