Generador TOTP
Cada vez que Google Authenticator o Authy te muestran un código de seis dígitos que cambia cada 30 segundos, eso es TOTP: un HMAC de un secreto compartido y la hora Unix actual, estandarizado en el RFC 6238. Este generador calcula los mismos códigos a partir de cualquier secreto Base32, algo muy útil para depurar una nueva integración de autenticación en dos pasos (2FA), averiguar por qué un servicio rechaza tus códigos u observar cómo reacciona el algoritmo a distintos parámetros. Úsalo con secretos de prueba: el código se calcula en nuestro servidor, así que los secretos reales que protegen tus cuentas deben estar en una aplicación de autenticación, no en una página web.
Cómo funciona este generador TOTP
-
1
Pega un secreto Base32
Letras A-Z y dígitos 2-7, el formato que llevan los códigos QR otpauth://. Los espacios y las minúsculas no dan problema; cualquier otro carácter se marca como Base32 no válido.
-
2
Elige el algoritmo de hash
SHA-1 es el que usan casi todos los servicios; cambia a SHA-256 o SHA-512 solo cuando el servicio lo exija expresamente.
-
3
Configura dígitos y periodo
Elige 6, 7 u 8 dígitos y una ventana de 30 o 60 segundos. La combinación estándar es 6 dígitos cada 30 segundos.
-
4
Lee el código actual
El código se refresca cada segundo y la cuenta atrás indica cuántos segundos le quedan a la ventana actual.
-
5
Compara la URI otpauth
La herramienta muestra la URI otpauth:// de tus parámetros, para que puedas contrastarla con lo que codifica el QR de configuración de un servicio.
El algoritmo en palabras sencillas
TOTP es HOTP (contraseña de un solo uso basada en HMAC, RFC 4226) en el que el contador se sustituye por la hora Unix actual dividida por el paso de tiempo (normalmente 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
Tu dispositivo y el servidor hacen los mismos cálculos con el mismo secreto y el mismo reloj, así que llegan al mismo código sin que este viaje nunca por la red. Un código de 6 dígitos es simplemente el HMAC truncado módulo 10^6. Sin magia, solo hashing.
Parámetros habituales
| Servicio | Algoritmo | Dígitos | Periodo |
|---|---|---|---|
| La mayoría de webs y apps | SHA-1 | 6 | 30 s |
| GitHub | SHA-1 | 6 | 30 s |
| Cloudflare | SHA-1 | 6 | 30 s |
| Cuentas de Microsoft | SHA-1 | 6 | 30 s |
| Algunos bancos y VPN de empresa | SHA-256 o SHA-512 | 8 | 60 s |
Si un servicio rechaza tus códigos, revisa primero el número de dígitos y el periodo, y después el algoritmo. Ten en cuenta además que algunas aplicaciones de autenticación ignoran en silencio los parámetros no estándar (Google Authenticator trató históricamente todo como SHA-1, 6 dígitos y 30 segundos), así que prueba siempre con la aplicación exacta que usarán tus usuarios.
Guardar los secretos a buen recaudo
- Nunca envíes un secreto 2FA por correo o mensaje. En cuanto entra en una bandeja de entrada, queda para siempre en los registros y copias de seguridad del proveedor.
- Da de alta la 2FA escaneando el código QR. El QR codifica una URI
otpauth://totp/...que reúne secreto, algoritmo, dígitos y periodo en un solo paquete sin ambigüedades. - Haz copia en el momento del alta. Guarda los códigos de recuperación, o el propio secreto, en un gestor de contraseñas; perder el móvil sin ellos te deja fuera.
- Un secreto por servicio. Cada servicio emite su propio secreto al configurarlo; si alguno se filtra, vuelve a darlo de alta para que el antiguo deje de funcionar.
Desfase horario
TOTP solo funciona mientras ambos relojes coinciden. Esta página calcula los códigos con el reloj del servidor, así que si el código de aquí difiere del de tu aplicación de autenticación, el primer sospechoso es el reloj del dispositivo. La mayoría de los validadores aceptan una ventana de desfase en cada sentido (de 30 a 60 segundos); más allá, sincroniza el reloj del dispositivo por NTP antes de culpar al secreto.
Usa aquí secretos de prueba
Esta herramienta calcula el código en nuestro servidor: el secreto que escribes se transmite por HTTPS con cada actualización y además aparece en la URL de la página si te mueves entre los pasos de la herramienta. Eso es correcto para desarrollo, demostraciones y depuración con secretos desechables. No es el lugar para el secreto real que protege tu correo o tu cuenta bancaria; ese debe vivir en una aplicación de autenticación dedicada en tu móvil. Si ya has pegado un secreto real fuera de tu aplicación de autenticación, vuelve a configurar la 2FA en ese servicio para que el secreto rote.
Preguntas frecuentes
Trata esta página como una utilidad de desarrollo y pruebas, no como una caja fuerte. El código se calcula en el servidor, así que el secreto viaja a nuestro servidor por HTTPS y puede aparecer en la URL de la página entre pasos. Usa secretos de demostración o desarrollo con total libertad; nunca pegues el secreto real de una cuenta que te importe. Si ya lo has hecho, vuelve a configurar la 2FA en ese servicio para rotar el secreto.
Revisa primero los parámetros: el algoritmo, el número de dígitos y el periodo deben coincidir exactamente con lo que emitió el servicio. Después revisa los relojes: esta página usa el reloj del servidor, así que un desajuste suele apuntar al otro dispositivo. Y recuerda que algunas aplicaciones ignoran los parámetros no estándar; el ejemplo clásico es Google Authenticator.
Solo Base32: letras de la A a la Z y dígitos del 2 al 7, con relleno = opcional. Los espacios se eliminan y las minúsculas se convierten automáticamente. Los secretos en hexadecimal o en bytes crudos hay que convertirlos antes a Base32; de lo contrario, la herramienta indica que el secreto Base32 no es válido.
Te quedas fuera de la 2FA de esa cuenta. Usa el proceso de recuperación del servicio (códigos de recuperación, verificación de identidad, SMS de respaldo). Guarda siempre los códigos de recuperación o el QR inicial en un lugar seguro al configurarla.
Sí. Genera un secreto aleatorio en el servidor, de al menos 128 bits (el RFC 4226 recomienda 160), muéstralo una sola vez como código QR y valida los códigos enviados calculando el mismo HMAC, normalmente aceptando una ventana de margen en cada sentido. Hay bibliotecas maduras para cualquier stack: pyotp (Python), otplib (JavaScript), rotp (Ruby).
Herramientas relacionadas
Codificador de cifrado A1Z26
Codifica texto usando el cifrado A1Z26 (A=1, B=2, ... Z=26) o decodifica una secuencia de números de vuelta a letras, con separador personalizable.
Cifrado de número a letra
Convierte números en letras y al revés con el cifrado A=1, B=2 (A1Z26) para acertijos, enigmas y pistas de salas de escape.
Codificador de Cifrado César
Encripta y desencripta texto usando el cifrado César. Cualquier desplazamiento de 1-25, soporta ROT13 como un caso especial, conserva la puntuación y las mayúsculas y minúsculas.
Generador de HMAC
Genera firmas HMAC (SHA-256, SHA-384, SHA-512, SHA-1, MD5) a partir de un mensaje y una clave secreta para autenticación de API y webhooks.
Generador de Hash
Genera hashes MD5, SHA-1, SHA-256, SHA-384, SHA-512 y CRC32 desde texto, con un digest listo para copiar en checksums y comparaciones.
Generador de JWT
Genera JWT firmados con encabezado personalizado, claims en el payload, firma HMAC o RSA, restricciones de expiración y audiencia para pruebas.
Herramienta disponible en otros idiomas
- TOTP-Generator [DE]
- TOTPジェネレーター [JA]
- Generator TOTP [PL]
- TOTP-generator [SV]
- TOTP-generator [NL]
- Gerador TOTP [PT]
- ตัวสร้าง TOTP [TH]
- Générateur TOTP [FR]
- مولد TOTP [AR]
- Bộ tạo TOTP [VI]
- Generator TOTP [ID]
- TOTP 생성기 [KO]
- TOTP Üretici [TR]
- TOTP 生成器 [ZH]
- TOTP Generator [EN]
- Generatore TOTP [IT]
- Генератор TOTP [RU]