Generador de códigos TOTP y HOTP
Genera códigos 2FA TOTP y HOTP a partir de un secreto Base32 o una URI otpauth://, con SHA-1, SHA-256 o SHA-512, cuenta atrás y código QR.
Un secreto 2FA es tan sensible como una contraseña. Aquí todo se ejecuta localmente en tu navegador: el secreto, los códigos y el código QR nunca se envían a ningún sitio.
- Código anterior
- —
- Código actual
- —
- Código siguiente
- —
Los códigos TOTP dependen del reloj de tu dispositivo. Si no coinciden, comprueba que la hora se ajusta automáticamente.
Configurar una app de autenticación
Añade un emisor y un nombre de cuenta, y luego escanea el código QR o copia el enlace otpauth:// en tu app de autenticación.
Cómo generar códigos TOTP
- Pega un secreto Base32 (por ejemplo
JBSWY3DPEHPK3PXP) o un enlaceotpauth://completo en Secreto (Base32) o URI otpauth://. Se aceptan espacios, guiones, minúsculas y la ausencia del relleno=. - Los códigos aparecen mientras escribes o al pulsar Mostrar códigos. Una URI pegada rellena por ti los campos Tipo, Algoritmo, Dígitos, Periodo (segundos), Emisor y Cuenta.
- Lee el Código actual en el centro, con el Código anterior y el Código siguiente a cada lado. La barra de debajo cuenta los segundos que faltan para que cambie el código, y Copiar código lo copia sin el espacio.
- Para códigos basados en un contador, elige HOTP (basado en un contador), define el Contador y usa Siguiente contador para avanzar.
- Para crear un nuevo secreto 2FA, pulsa Nuevo secreto aleatorio. Rellena Emisor y Cuenta y después escanea el código QR con una app de autenticación, usa Copiar URI o Descargar código QR (PNG).
Cómo funcionan TOTP y HOTP
HOTP (RFC 4226) calcula un HMAC de un contador de 8 bytes con el secreto compartido y después aplica el truncamiento dinámico: los cuatro últimos bits del HMAC eligen un desplazamiento, se leen cuatro bytes a partir de ahí, se borra el bit superior y el número se reduce módulo 10^dígitos. El resultado es un código de 6 a 8 dígitos.
TOTP (RFC 6238) es HOTP en el que el contador es el intervalo de tiempo actual: T = floor(tiempo Unix / periodo), con un periodo de 30 segundos por defecto. Tu móvil y el servidor calculan el mismo código por separado porque comparten el secreto y (más o menos) la misma hora. Por eso se muestran el Código anterior y el Código siguiente: los servidores suelen aceptar un intervalo antes o después para tolerar el desfase del reloj.
El HMAC se calcula con la API Web Crypto de tu navegador usando SHA-1, SHA-256 o SHA-512. SHA-1 con 6 dígitos y 30 segundos es lo que usa casi cualquier servicio; SHA-256 y SHA-512 están permitidos por la RFC 6238, pero algunas apps los ignoran, así que cambia los valores predeterminados solo si el servicio lo pide.
La URI otpauth:// y el código QR
Las apps de autenticación se configuran con una URI como otpauth://totp/Example:alice@example.com?secret=…&issuer=Example&algorithm=SHA1&digits=6&period=30, que normalmente se muestra como código QR. Esta herramienta lee esas URI (incluidas las etiquetas codificadas por porcentaje como ACME%20Co) y crea otras nuevas. El código QR se dibuja localmente a partir de la URI que aparece en URI otpauth://.
Un nuevo secreto aleatorio tiene 20 bytes (160 bits), la longitud que recomienda la RFC 4226, obtenidos de crypto.getRandomValues.
Consejos de seguridad
- El secreto es el segundo factor en sí: quien lo tenga puede generar tus códigos. No pegues los secretos de cuentas importantes en ordenadores compartidos y nunca compartas capturas del código QR.
- Todo se calcula localmente; no se envía nada por la red. Cierra la pestaña cuando termines.
- Guarda los códigos de respaldo que te dé el servicio: un secreto perdido no se puede recuperar.
Preguntas frecuentes
¿Por qué mi código no coincide con el de mi app?
Comprueba primero el reloj de tu dispositivo: los códigos TOTP cambian en cada periodo, así que un reloj desfasado más de unos 30 segundos da códigos distintos. Después comprueba que el algoritmo, los dígitos y el periodo coinciden con los que usó el servicio.
¿Es compatible con Google Authenticator y apps similares?
Sí. Sigue la RFC 6238 y el formato de URI otpauth que usan esas apps. Escanea el código QR o escribe el secreto Base32 en la app, y ambas deberían mostrar el mismo Código actual.
¿Qué diferencia hay entre TOTP y HOTP?
TOTP avanza con el tiempo, así que un código caduca al terminar el periodo. HOTP avanza con un contador que aumenta cada vez que se usa un código, así que un código sigue siendo válido hasta que se usa o se sustituye.
¿Puedo usar esta herramienta como autenticador diario?
Está pensada para pruebas, desarrollo y recuperación. Para el uso diario es más seguro una app en el móvil o una llave de seguridad física, porque el secreto no tiene que pegarse en una página web cada vez.
¿Se han comprobado los cálculos con los estándares?
Sí. La herramienta se prueba con los valores HOTP del apéndice D de la RFC 4226 y los valores TOTP del apéndice B de la RFC 6238 para SHA-1, SHA-256 y SHA-512.
Herramientas relacionadas
- Generador HMAC Calcula un HMAC-SHA1, SHA-256, SHA-384 o SHA-512 con una clave en texto, hex o Base64, obtén la salida en hex y Base64 y verifica firmas de webhook.
- Generador de contraseñas Generador de contraseñas gratis que crea contraseñas seguras y aleatorias de 4 a 128 caracteres en tu navegador. No se guarda ni se envía nada.
- Generador de códigos QR Crea códigos QR gratis para enlaces, texto, wifi, contactos, correo y SMS. Añade colores y un logo y descárgalos en PNG o SVG sin salir de tu equipo.
- Compartición de secretos de Shamir Divide una contraseña o frase de recuperación en N fragmentos de modo que M cualesquiera la reconstruyan, con el esquema de Shamir en GF(256), en tu navegador.