O que esta ferramenta faz
A maioria dos códigos de login em duas etapas são códigos TOTP: seis dígitos que mudam a cada 30 segundos, calculados com uma chave compartilhada e a hora atual. Esta ferramenta gera esses mesmos códigos no seu navegador. Cole a chave secreta (escrita em Base32, com letras de A a Z e dígitos de 2 a 7) ou um link otpauth:// inteiro e você vê o código atual com um anel que conta o tempo até o próximo, além do código anterior e do seguinte. Serve para quem desenvolve ou testa dois fatores, para conferir se a chave foi copiada certo e para quem tem uma chave guardada e precisa de um código.
Como um código é feito
A chave vira bytes. O número de períodos completos desde 1º de janeiro de 1970 (UTC) forma um contador de 8 bytes. O HMAC do contador com a chave dá um valor de 20 bytes (com SHA-1). Os quatro últimos bits escolhem um deslocamento, quatro bytes a partir dele são lidos como um número sem o bit mais alto, e o resto da divisão por um milhão (seis dígitos) é o código, com zeros à esquerda se preciso. Uma conferência: a chave de teste da RFC 6238 é o texto 12345678901234567890, que em Base32 é GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ. No segundo 59 o contador é 1 e, com SHA-1 e oito dígitos, o código é 94287082; com seis dígitos, 287082.
Algoritmo, dígitos, período e links otpauth
Os serviços descrevem uma chave com um link otpauth, que é o conteúdo do QR da tela de configuração. Ele pode trazer emissor, nome da conta, algoritmo, dígitos (6 a 8) e período. Alguns apps ignoram essas opções e usam sempre SHA-1, seis dígitos e 30 segundos; se um código não bate com o seu app, tente esses valores. Para ler o link de uma imagem QR use o leitor de QR code e cole aqui. Um link de códigos por contador (HOTP) é reconhecido e recusado.
Segurança
Uma chave TOTP vale tanto quanto uma senha: quem a tem gera seus códigos para sempre. Não cole a chave de uma conta real, como a do banco ou do e-mail principal, em nenhum site, inclusive neste. A página roda no seu navegador, não envia a chave, não a guarda no armazenamento nem na barra de endereço e a esquece ao fechar a aba, mas você não consegue verificar isso de fora. Use com contas de teste e guarde as chaves reais num app autenticador ou num gerenciador de senhas. Veja também o gerador de senhas e a criptografia de texto.
Quando um código é recusado
O código depende do relógio do aparelho. Se o relógio estiver um minuto errado, o código é de outro período e o serviço o recusa; ative a hora automática. O código anterior e o seguinte aparecem para você ver se o serviço aceita um período vizinho. Confira também se a chave não perdeu um caractere: uma chave errada continua gerando códigos, só que não os certos.