DevToolPal
PT

Gerador de códigos TOTP / HOTP

Gere códigos de autenticação em dois fatores (TOTP e HOTP) a partir de um segredo Base32 ou URI otpauth://, com SHA-1/256/512, 6–8 dígitos e contagem regressiva ao vivo.

Roda localmente, nada é enviado

Opções

Tipo
Dígitos
Intervalo

Segredo (Base32) ou URI otpauth://

Códigos

O resultado aparece aqui

O que faz

Apps de autenticação em dois fatores como Google Authenticator, Microsoft Authenticator e 1Password mostram códigos de seis dígitos que mudam a cada 30 segundos. Cada código é uma senha de uso único calculada a partir de um segredo compartilhado: o TOTP (RFC 6238) usa o tempo e o HOTP (RFC 4226) usa um contador. Esta ferramenta calcula os mesmos códigos a partir do segredo, para você testar uma configuração 2FA, depurar uma implementação no servidor ou conferir qual deveria ser um código.

Ela mostra o código atual com uma contagem regressiva ao vivo, além do código anterior e do próximo, que os servidores costumam aceitar para cobrir pequenas diferenças de relógio.

Como usar

  1. Cole o segredo Base32 (letras A–Z e dígitos 2–7; espaços e maiúsculas não importam) ou uma URI otpauth:// completa de um QR code. Clique em Exemplo para testar.
  2. Escolha TOTP ou HOTP e ajuste o algoritmo, os dígitos e o intervalo de acordo com a conta. As configurações de uma URI otpauth têm prioridade.
  3. No HOTP, digite o contador e use Contador +1 para avançar pelos códigos.
  4. Copie o código atual. A contagem regressiva mostra por quanto tempo ele continua válido.

Exemplo

O segredo de demonstração JBSWY3DPEHPK3PXP é a forma Base32 dos bytes “Hello!” seguidos de 0xDEADBEEF. A URI abaixo, como codificada em um QR code, descreve uma conta que o usa com as configurações padrão:

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

No tempo Unix 1700000000 este segredo gera o código 324 550, e faltam 10 segundos para a janela acabar.

Como o código é calculado

O segredo é decodificado de Base32 para bytes. No TOTP, o contador é o tempo Unix em segundos dividido pelo intervalo e arredondado para baixo. O contador é escrito em 8 bytes e assinado com HMAC usando o segredo. O truncamento dinâmico escolhe 4 bytes da saída do HMAC com base no último nibble, e o número é reduzido à quantidade de dígitos pedida, mantendo os zeros à esquerda.

Perguntas frequentes

› Por que meu código não bate com o do app autenticador?

Códigos TOTP dependem do relógio, então primeiro verifique se a hora do dispositivo está no automático. Depois confira se o algoritmo, os dígitos e o intervalo batem com a conta. A maioria dos serviços usa SHA-1, 6 dígitos e 30 segundos, e os apps autenticadores ignoram outras configurações a menos que o QR code as indique.

› Qual a diferença entre TOTP e HOTP?

O TOTP (RFC 6238) usa como contador a hora atual dividida pelo intervalo, então o código muda a cada 30 segundos. O HOTP (RFC 4226) usa um contador que aumenta em um a cada código usado. Ambos passam o segredo e o contador pelo HMAC e ficam com os últimos 6 a 8 dígitos.

› Meu segredo é salvo ou enviado para algum lugar?

Não. Os códigos são calculados no seu navegador com a API Web Crypto. O segredo não é salvo, não vai para a barra de endereços e não entra nos links de compartilhamento; um link compartilhado leva apenas as configurações. Mesmo assim, um segredo 2FA dá acesso total ao segundo fator, então cole apenas segredos que sejam seus.

› Posso usar isto para implementar 2FA no meu próprio app?

Sim. Clique em Segredo aleatório para criar um segredo Base32 de 160 bits, coloque-o em uma URI otpauth:// ou QR code para seus usuários e compare os códigos gerados pelo servidor com os mostrados aqui. Os servidores costumam aceitar também o código anterior e o próximo para tolerar diferenças de relógio.