Como usar
- Digite a chave secreta da página de dois fatores do serviço no campo, ou cole o texto otpauth:// que o QR code dele guarda. Clique em Mostrar para conferir o que você digitou.
- Escolha o Hash, os Dígitos e o Período que o serviço indica. Muitos serviços usam os padrões do Key URI Format: SHA-1, 6 dígitos e 30 segundos.
- Para um serviço baseado em contador, escolha Baseado em contador (HOTP) e informe o contador; Contador + 1 o avança.
- Confira o Código atual antes que o Tempo restante acabe, e veja os códigos Anterior e Seguinte se o relógio do seu aparelho estiver um pouco adiantado ou atrasado.
Como um código é feito
O HOTP (RFC 4226) pega a chave secreta e um contador, calcula um HMAC do contador com o hash e toma quatro bytes dele (truncamento dinâmico). O número que esses bytes dão, módulo 10 elevado ao número de dígitos, é o código.
O TOTP (RFC 6238) é o HOTP com um contador feito a partir do tempo: o tempo Unix em segundos, dividido pelo período e arredondado para baixo. Um código novo começa a cada período, então os dois lados precisam de um relógio preciso.
TOTP = HOTP(chave, piso(tempo unix / período)); HOTP = truncar(HMAC(chave, contador)) mod 10^dígitos
Chaves secretas e URIs otpauth://
A chave secreta é um texto em Base32 (RFC 4648): as letras de A a Z e os dígitos de 2 a 7. Os espaços são ignorados, e o preenchimento pode ser omitido. Uma chave com um caractere fora desse conjunto, ou com um tamanho impossível, é recusada.
Um URI otpauth:// (o Key URI Format do Google) guarda o tipo, o rótulo, a chave secreta e, opcionalmente, o emissor, o algoritmo, os dígitos, o período e o contador. As configurações que faltam recebem os padrões do formato: SHA1, 6 dígitos, 30 segundos e contador 0.
Como a página foi conferida
O código é testado com os valores de teste do Apêndice D da RFC 4226 (contadores de 0 a 9) e do Apêndice B da RFC 6238 (seis vezes, para SHA-1, SHA-256 e SHA-512 com oito dígitos). O HMAC é calculado pelo SubtleCrypto do seu navegador.
Exemplo resolvido: a chave de teste da RFC 6238
A chave de teste da RFC é o texto 12345678901234567890, que em Base32 é GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ. No tempo Unix 59, com período de 30 segundos, o passo 1 do TOTP dá o código de oito dígitos 94287082 para SHA-1.
Com seis dígitos, o mesmo passo dá 287082, o código do contador 1 da RFC 4226; são os últimos seis dígitos do valor de oito.
Perguntas frequentes
A chave ou o código é enviado para algum servidor?
Não. O código é calculado no seu navegador, e a página não faz nenhuma requisição que contenha a chave ou o código. Nada é guardado, e ao recarregar ambos são esquecidos.
Devo colar aqui a chave secreta da minha conta real?
Só em uma página em que você confia, e só se ninguém mais puder ver a sua tela. O aplicativo autenticador é o lugar normal para uma conta real, porque guarda a chave para o uso do dia a dia; esta página serve para as suas próprias ferramentas e para códigos de que você precisa uma vez.
Por que o código muda a cada 30 segundos?
Um código baseado em tempo (TOTP) usa o número de períodos desde a época Unix, então um código novo começa a cada período. A contagem regressiva mostra quanto tempo o atual ainda dura.
Por que o meu código não bate com o aplicativo do serviço?
Confira a chave (só Base32), o hash, os dígitos e o período, que o serviço informa; depois confira se o relógio do seu aparelho está certo, porque um código baseado em tempo depende dele. Os códigos anterior e seguinte ajudam a ver uma pequena diferença de relógio.
Qual hash devo escolher?
Escolha o que o serviço indicar. O SHA-1 é o padrão do HOTP da RFC 4226 e do formato otpauth; a RFC 6238 aceita SHA-256 e SHA-512 para o TOTP também.
Qual é a diferença entre TOTP e HOTP?
O TOTP usa o tempo, então o código muda a cada período. O HOTP usa um contador que avança a cada uso, então o código fica o mesmo até o contador mudar.
Para que serve o texto otpauth://?
Ele leva as configurações de uma chave de dois fatores no Key URI Format, geralmente dentro de um QR code. Colá-lo aqui preenche a chave, o hash, os dígitos, o período e o contador.
Fontes
- RFC 4226 (em inglês): HOTP, HMAC-Based One-Time Password Algorithm
- RFC 6238 (em inglês): TOTP, Time-Based One-Time Password Algorithm
- RFC 4648 (em inglês): The Base16, Base32, and Base64 Data Encodings
- Google Authenticator (em inglês): Key Uri Format
- MDN (em inglês): SubtleCrypto.sign()
Números e texto verificados pela última vez em terça-feira, 10 de novembro de 2026.