Generador de códigos TOTP

Genera códigos TOTP en vivo (RFC 6238) a partir de un secreto Base32 o una URI/QR otpauth://, para probar integraciones 2FA, todo en tu navegador.

🌐 English

0
Enter a Base32 secret to see a live code

This is a development/testing tool, not a replacement authenticator app. The code above is generated entirely on your device from the secret in the field — nothing is sent to a server, and the secret is never saved anywhere (it lives only in this page's memory and disappears the moment you reload or close the tab).

🔒 Privado por diseño: todo funciona localmente en tu navegador; nada se sube nunca a ningún servidor.

Cómo generar un código TOTP

  1. Escribe o pega tu secreto Base32 en el campo del secreto, o, si tienes una URI de configuración otpauth://, pégala en el campo de importación (o sube una imagen QR que la contenga) y pulsa Apply URI.
  2. Comprueba que Algorithm, Digits y Period coinciden con lo que emitió el servicio (importar una URI o un QR rellena esto automáticamente).
  3. Observa cómo el código de 6 u 8 dígitos se actualiza en vivo cada segundo, con el anillo de cuenta atrás mostrando exactamente cuánto falta para que cambie.
  4. Pulsa Copy code para copiar el valor actual y pegarlo en lo que estés probando.

Un generador de TOTP pensado para probar integraciones 2FA, no para cuentas reales

Cualquiera que esté configurando autenticación de dos factores, añadiendo soporte TOTP a un flujo de inicio de sesión, escribiendo una prueba de integración que necesita un código válido, o depurando por qué la configuración 2FA de un servicio autoalojado no acepta códigos, acaba necesitando una forma de calcular un valor TOTP a partir de un secreto conocido sin sacar el móvil cada vez. Hacerlo a mano significa recurrir a una app del teléfono que no fue diseñada para iterar rápido: no puedes inspeccionar fácilmente el secreto subyacente, cambiar de algoritmo, ni ver varios códigos futuros a la vez. Esta herramienta existe exactamente para esa necesidad de desarrollo, pega un secreto (de un fixture de pruebas, un entorno de staging o un archivo .env), observa el código en vivo y el instante exacto en que cambia, y sigue con tu trabajo.

TOTP en sí (RFC 6238, “Time-Based One-Time Password Algorithm”) es el algoritmo detrás de casi todo flujo de configuración 2FA “escanea este código QR” en la web: un secreto compartido, establecido una sola vez, se combina con la hora actual (redondeada a una ventana fija, normalmente 30 segundos) y un hash con clave para producir un código numérico corto que ambas partes pueden calcular de forma independiente, sin necesitar ninguna ida y vuelta por red para comprobar que un código es válido. Precisamente por eso es comprobable completamente sin conexión: dados el mismo secreto, la misma hora y la misma configuración, esta herramienta y la app autenticadora real que protege una cuenta siempre calcularán el código idéntico.

Tu secreto nunca sale de tu dispositivo

Un secreto TOTP es una clave criptográfica real, cualquiera que la tenga puede generar códigos válidos para esa cuenta indefinidamente, igual que cualquiera con una contraseña puede iniciar sesión. Esta página nunca lo envía a ningún sitio: la decodificación Base32, el cálculo del HMAC (a través de la propia API Web Crypto del navegador) y el paso de truncamiento dinámico de RFC 4226 que convierte un digest HMAC en bruto en un código de 6 u 8 dígitos, todo se ejecuta dentro de esta pestaña del navegador. No se transmite, registra ni escribe nada en el almacenamiento local, el secreto existe únicamente en el estado en memoria de esta página, y recargar o cerrar la pestaña lo borra por completo. Es una decisión deliberada: significa que el secreto no se puede recuperar si navegas fuera por accidente en mitad de una prueba, pero también que no queda nada sensible rondando después de terminar.

URIs otpauth:// y códigos QR de configuración, explicados

Todo flujo “escanea este código QR para configurar 2FA” en realidad solo muestra un código QR que codifica una URI de texto plano otpauth://totp/Etiqueta?secret=...&issuer=...&algorithm=...&digits=...&period=..., el código QR es simplemente una forma cómoda de llevar esa URI a un teléfono sin tener que escribirla. Esta herramienta puede leer esa misma URI de dos formas: pégala directamente si ya tienes el texto en bruto (por ejemplo, de la opción “¿no puedes escanear? introduce esto manualmente” de un servicio), o sube una imagen del propio código QR, que se decodifica localmente usando la misma técnica de lectura de QR en el propio dispositivo que hay detrás de la herramienta Lector de Códigos QR de este sitio. En ambos casos, el secreto, el algoritmo, el número de dígitos y el período se rellenan automáticamente.

Usos habituales

Cómo funciona, en imágenes

Captura de pantalla de la herramienta Generador de códigos TOTP con un generador de códigos de doble factor inicializado desde un URI otpauth://, una imagen QR de configuración escaneada o un secreto Base32 escrito directamente, con SHA-1, SHA-256 o SHA-512 y 6 u 8 dígitos
Generador de códigos TOTP en pleno proceso: un generador de códigos de doble factor inicializado desde un URI otpauth://, una imagen QR de configuración escaneada o un secreto Base32 escrito directamente, con SHA-1, SHA-256 o SHA-512 y 6 u 8 dígitos.
Diagrama: dónde ocurre el trabajo en una página de SysFenix que no tiene ninguna entrada de archivo: la herramienta llega como JavaScript normal dentro de la página, calcula la respuesta en tu propio dispositivo y la muestra ahí mismo, de modo que la subida, la cola y el registro en servidor que necesita una herramienta online típica no ocurren nunca
Dónde ocurre el trabajo en una página de SysFenix que no tiene ninguna entrada de archivo: la herramienta llega como JavaScript normal dentro de la página, calcula la respuesta en tu propio dispositivo y la muestra ahí mismo, de modo que la subida, la cola y el registro en servidor que necesita una herramienta online típica no ocurren nunca.

Preguntas frecuentes

¿La interfaz de esta herramienta está en español?

Solo en parte. El texto de esta página (título, preguntas frecuentes, artículo) está en español, pero el widget interactivo en sí (las etiquetas de los campos "Base32 secret", "Algorithm", "Digits", "Period", los botones "Apply URI" / "Upload QR image" / "Copy code" y los mensajes de error) es un único componente compartido en inglés que se usa sin cambios en ambos idiomas, el mismo patrón ya establecido por otras herramientas interactivas de este sitio. Los códigos numéricos generados, en cambio, son completamente independientes del idioma.

¿Puedo usar esto en lugar de una aplicación autenticadora real?

No, esta es una herramienta de desarrollo/pruebas para quienes están creando o depurando autenticación de dos factores, no un sustituto de Google Authenticator, Authy, 1Password o una llave de seguridad física. Una pestaña del navegador es una superficie de ataque mayor que una app autenticadora dedicada, y esta página deliberadamente no guarda tu secreto en ningún sitio, así que es la herramienta equivocada para proteger una cuenta real que te importe de verdad.

¿Mi secreto se envía alguna vez a un servidor, o se guarda en algún sitio?

No. Cada paso (decodificar el secreto Base32, calcular el HMAC, generar el código) se ejecuta enteramente dentro de tu pestaña del navegador usando la API nativa Web Crypto. No se sube, registra ni guarda nada en el almacenamiento local; el secreto vive únicamente en la memoria de esta página y desaparece en el instante en que recargas o cierras la pestaña.

¿Qué significan Algorithm, Digits y Period, y qué valores debería usar?

Son los tres parámetros que RFC 6238 permite configurar a un emisor, qué función hash firma el código (Algorithm), cuántos dígitos tiene el código (Digits) y durante cuántos segundos es válido cada código (Period). A menos que tengas una razón concreta para cambiarlos, déjalos en los valores por defecto de la RFC (SHA-1, 6 dígitos, 30 segundos), eso es lo que usa la inmensa mayoría de servicios reales (GitHub, Google, AWS, Stripe y la mayoría del resto), e importar una URI otpauth:// configura los tres automáticamente según lo que especificó el emisor.

¿Cuál es la diferencia entre TOTP y HOTP, y por qué esta herramienta no admite HOTP?

Ambos están definidos por RFCs complementarias (6238 y 4226) y comparten el mismo núcleo de "HMAC y luego truncar", pero derivan su "contador" de forma distinta, TOTP (basado en tiempo) usa la hora actual dividida en ventanas fijas, mientras que HOTP (basado en HMAC) usa un contador explícito que se incrementa en uno cada vez que se genera y acepta un código. Casi toda configuración real de 2FA usa TOTP, ya que no necesita estado de sincronización de contador en el servidor; esta herramienta se limita a ese caso bien definido en lugar de admitir también la semántica distinta de HOTP, y rechaza claramente una URI `otpauth://hotp/...` en lugar de generar silenciosamente un código TOTP incorrecto a partir de ella.

¿Puedo importar un código QR real de configuración 2FA?

Sí, sube una captura de pantalla o foto del código QR y se decodifica localmente (la misma lectura de QR en el propio dispositivo que usa la herramienta Lector de Códigos QR de este sitio) para extraer la URI otpauth:// subyacente, o puedes pegar esa URI directamente como texto si ya la tienes. En ambos casos, el secreto, el algoritmo, el número de dígitos y el período se leen directamente de la URI y se aplican automáticamente.

Herramientas relacionadas