Gerador TOTP
Toda vez que o Google Authenticator ou o Authy mostra um código de seis dígitos que muda a cada 30 segundos, isso é TOTP: um HMAC calculado a partir de um segredo compartilhado e do horário Unix atual, padronizado na RFC 6238. Este gerador calcula os mesmos códigos a partir de qualquer segredo Base32, o que é útil para depurar uma nova integração de autenticação de dois fatores (2FA), descobrir por que um serviço rejeita seus códigos ou observar como o algoritmo reage a parâmetros diferentes. Use-o com segredos de teste: o código é calculado no nosso servidor, então os segredos reais que protegem suas contas devem ficar em um aplicativo autenticador, não em uma página da web.
Como funciona este gerador TOTP
-
1
Cole um segredo Base32
Letras A-Z e dígitos 2-7, o formato usado nos QR codes otpauth://. Espaços e minúsculas não são problema; qualquer outro caractere é apontado como Base32 inválido.
-
2
Escolha o algoritmo de hash
SHA-1 é o que quase todos os serviços usam; mude para SHA-256 ou SHA-512 apenas quando o serviço exigir expressamente.
-
3
Defina dígitos e período
Escolha 6, 7 ou 8 dígitos e uma janela de 30 ou 60 segundos. A combinação padrão é 6 dígitos a cada 30 segundos.
-
4
Leia o código atual
O código é atualizado a cada segundo, e a contagem regressiva mostra quantos segundos ainda restam para a janela atual.
-
5
Compare a URI otpauth
A ferramenta exibe a URI otpauth:// dos seus parâmetros, para você conferir com o que o QR code de configuração de um serviço codifica.
O algoritmo em linguagem simples
TOTP é HOTP (senha de uso único baseada em HMAC, RFC 4226) com o contador substituído pelo horário Unix atual dividido pelo passo de tempo (geralmente 30 segundos):
counter = floor(unix_time / 30)
hash = HMAC-SHA1(secret, counter_as_8_byte_big_endian)
offset = last byte of hash AND 0x0F
truncated = 4 bytes from offset, with the top bit zeroed
code = truncated mod 10^digits
Seu dispositivo e o servidor fazem a mesma conta com o mesmo segredo e o mesmo relógio, então chegam ao mesmo código sem que ele jamais seja transmitido. Um código de 6 dígitos é apenas o HMAC truncado módulo 10^6. Sem mágica, só hashing.
Parâmetros comuns
| Serviço | Algoritmo | Dígitos | Período |
|---|---|---|---|
| A maioria dos sites e apps | SHA-1 | 6 | 30 s |
| GitHub | SHA-1 | 6 | 30 s |
| Cloudflare | SHA-1 | 6 | 30 s |
| Contas Microsoft | SHA-1 | 6 | 30 s |
| Alguns bancos e VPNs corporativas | SHA-256 ou SHA-512 | 8 | 60 s |
Se um serviço rejeitar seus códigos, verifique primeiro a quantidade de dígitos e o período, depois o algoritmo. Note também que alguns aplicativos autenticadores ignoram silenciosamente parâmetros fora do padrão (o Google Authenticator historicamente tratava tudo como SHA-1, 6 dígitos, 30 segundos), então teste sempre com o aplicativo exato que seus usuários vão usar.
Guardando os segredos com segurança
- Nunca envie um segredo 2FA por e-mail ou mensagem. Assim que ele entra em uma caixa de entrada, fica para sempre nos registros e backups do provedor.
- Cadastre a 2FA escaneando o QR code. O QR codifica uma URI
otpauth://totp/...que reúne segredo, algoritmo, dígitos e período em um único pacote sem ambiguidade. - Faça backup no momento do cadastro. Guarde os códigos de recuperação, ou o próprio segredo, em um gerenciador de senhas; perder o celular sem eles deixa você trancado do lado de fora.
- Um segredo por serviço. Cada serviço emite o próprio segredo na configuração; se algum vazar, cadastre a 2FA de novo para que o antigo pare de funcionar.
Desvio de relógio
TOTP só funciona enquanto os dois relógios concordam. Esta página calcula os códigos com o relógio do servidor, então, se o código daqui for diferente do seu aplicativo autenticador, o primeiro suspeito é o relógio do dispositivo. A maioria dos validadores aceita uma janela de desvio para cada lado (30 a 60 segundos); além disso, sincronize o relógio do dispositivo via NTP antes de culpar o segredo.
Use segredos de teste aqui
Esta ferramenta calcula o código no nosso servidor: o segredo que você digita é transmitido por HTTPS a cada atualização e também aparece na URL da página se você navegar entre as etapas da ferramenta. Isso é adequado para desenvolvimento, demonstrações e depuração com segredos descartáveis. Não é o lugar para o segredo real que protege seu e-mail ou sua conta bancária; esse deve morar em um aplicativo autenticador dedicado no seu celular. Se você já colou um segredo real fora do seu autenticador, cadastre a 2FA de novo naquele serviço para que o segredo seja trocado.
Perguntas frequentes
Trate esta página como uma ferramenta de desenvolvimento e testes, não como um cofre. O código é calculado no servidor, então o segredo viaja até o nosso servidor por HTTPS e pode aparecer na URL da página entre as etapas. Use segredos de demonstração ou desenvolvimento à vontade; nunca cole o segredo real de uma conta importante para você. Se já colou, cadastre a 2FA de novo naquele serviço para trocar o segredo.
Confira primeiro os parâmetros: algoritmo, quantidade de dígitos e período precisam corresponder exatamente ao que o serviço emitiu. Depois confira os relógios: esta página usa o relógio do servidor, então uma divergência costuma apontar para o outro dispositivo. Por fim, lembre que alguns aplicativos ignoram parâmetros fora do padrão, e o Google Authenticator é o exemplo clássico.
Apenas Base32: letras de A a Z e dígitos de 2 a 7, com preenchimento = opcional. Espaços são removidos e minúsculas são convertidas automaticamente. Segredos em hexadecimal ou bytes brutos precisam ser convertidos para Base32 antes; caso contrário, a ferramenta informa que o segredo Base32 é inválido.
Você fica trancado fora da 2FA daquela conta. Use o fluxo de recuperação do serviço (códigos de recuperação, verificação de identidade, SMS reserva). Sempre guarde os códigos de recuperação ou o QR code inicial em um lugar seguro na hora da configuração.
Sim. Gere um segredo aleatório no lado do servidor, com pelo menos 128 bits (a RFC 4226 recomenda 160), mostre-o uma única vez como QR code e valide os códigos enviados calculando o mesmo HMAC, normalmente aceitando uma janela de tolerância para cada lado. Há bibliotecas maduras para qualquer stack: pyotp (Python), otplib (JavaScript), rotp (Ruby).
Ferramentas relacionadas
Gerador de MD5
Gere um hash MD5 a partir de qualquer texto ou arquivo. Saída de 128 bits em hexadecimal, calculada inteiramente no seu navegador.
Gerador de Hash
Gere hashes MD5, SHA-1, SHA-256, SHA-384, SHA-512 e CRC32 a partir de texto, com um digest pronto para copiar em checksums e comparações.
Gerador de JWT
Gere JWTs assinados com cabeçalho personalizado, reivindicações de carga útil, assinatura HMAC ou RSA, expiração e restrições de público para testes.
Gerador de Hash MD5
Calcule checksums MD5 de textos e arquivos para verificação de integridade. Corresponde à saída de md5sum e openssl dgst -md5.
Cifra de número para letra
Converta números em letras e vice-versa usando a cifra A=1, B=2 (A1Z26) para quebra-cabeças, enigmas e pistas de salas de fuga.
Gerador de frase-senha
Gere uma frase-senha memorizável com palavras comuns aleatórias, com número de palavras ajustável, separador, maiúsculas e um número opcional no fim.
Ferramenta disponível em outros idiomas
- ตัวสร้าง TOTP [TH]
- Generador TOTP [ES]
- Generator TOTP [PL]
- TOTPジェネレーター [JA]
- TOTP-generator [SV]
- Bộ tạo TOTP [VI]
- مولد TOTP [AR]
- Générateur TOTP [FR]
- TOTP-Generator [DE]
- Generator TOTP [ID]
- TOTP 생성기 [KO]
- TOTP-generator [NL]
- TOTP Üretici [TR]
- TOTP 生成器 [ZH]
- TOTP Generator [EN]
- Generatore TOTP [IT]
- Генератор TOTP [RU]