Use um segredo Base32 de teste para comparar ajustes e códigos. Escolha TOTP para códigos baseados no relógio ou HOTP para um contador definido.
Funciona localmente no seu navegadorCompare com sua implementação usando um segredo descartável. Relógio, armazenamento, recuperação e limites exigem controles do servidor.
Este espaço de trabalho transforma um segredo Base32 no código de uso único que um aplicativo autenticador mostraria, com o algoritmo, o número de dígitos e o período ou contador escolhidos. Ele também gera a URI de configuração otpauth:// que um código QR codificaria.
O HMAC é calculado na aba com Web Crypto. A ferramenta não envia nenhuma requisição enquanto trabalha, então o segredo e o código gerado ficam no navegador.
O código é um HMAC sobre o contador em uso: o contador é assinado com o segredo, o último byte da assinatura seleciona uma janela de 4 bytes (truncamento dinâmico) e esse valor é reduzido módulo 10^dígitos. TOTP é a mesma função com o contador derivado do tempo Unix dividido pelo período; por isso um código TOTP muda sozinho, enquanto um código HOTP espera o próximo contador.
A ferramenta coincide com os vetores de teste publicados. Com o segredo do RFC, os contadores HOTP de 0 a 5 retornam 755224, 287082, 359152, 969429, 338314 e 254676. Um relógio dentro do passo de tempo do RFC que contém T=59 retorna 94287082 com SHA-1 e 8 dígitos, e os vetores posteriores (T=1111111109 e T=20000000000) retornam 07081804 e 65353130.
A revisão repete os parâmetros usados e lembra duas tarefas do servidor: o contador HOTP precisa ser incrementado e gravado de forma atômica pelo verificador, e um segredo com menos de 20 bytes decodificados é curto demais para produção. Um período diferente de 30 segundos e SHA-256 ou SHA-512 são válidos, mas menos aplicativos e servidores os aceitam.
Nada aqui valida um código digitado à mão, mede a deriva de relógio do servidor ou comprova que o segredo é o da sua conta. Compare um código gerado com a implementação que vai verificá-lo e trate o fluxo de cadastro do autenticador como referência.
A URI segue o formato de chave otpauth://: segredo, emissor, algoritmo (SHA1, SHA256 ou SHA512), dígitos e período ou contador; é a string que um código QR codifica. O segredo é reescrito em Base32 sem espaços nem preenchimento, e o rótulo une o emissor e o nome da conta.
O HMAC e a URI são produzidos dentro da aba e a ferramenta não envia nenhuma requisição, então o segredo e o código resultante não saem do navegador. Use um segredo de teste descartável ao comparar implementações e mantenha as sementes de produção nos sistemas autorizados a armazená-las.