Generador de TOTP y HOTP

Usa un secreto Base32 de prueba para comparar ajustes y códigos. Elige TOTP para códigos basados en el reloj o HOTP para un contador concreto.

Se ejecuta localmente en tu navegador
Los secretos y códigos permanecen en este navegador. Usa secretos de prueba cuando sea posible y nunca compartas una semilla activa.
Ajustes del autenticadorParámetros RFC 4226 / RFC 6238
Revisión de parámetros
  • Elige parámetros y calcula un código para revisar la configuración.

Prueba el aprovisionamiento antes de activar 2FA

Compara el valor con tu implementación usando un secreto desechable. La deriva de reloj, el almacenamiento, la recuperación y los límites requieren controles del servidor.

Cómo generar un código TOTP o HOTP

Este espacio de trabajo convierte un secreto Base32 en el código de un solo uso que mostraría una aplicación de autenticación, con el algoritmo, el número de dígitos y el periodo o contador que elijas. También genera la URI de configuración otpauth:// que codificaría un código QR.

El HMAC se calcula en la pestaña con Web Crypto. La herramienta no envía ninguna petición mientras trabaja, así que el secreto y el código generado permanecen en el navegador.

  1. Pega el secreto Base32 o pulsa Generar secreto de prueba para obtener uno aleatorio de 160 bits. Las minúsculas, los espacios y el relleno = se ignoran, así que un secreto copiado de la configuración de un servidor funciona tal cual.
  2. Elige el modo. TOTP cuenta pasos de tiempo: escoge el periodo, donde 30 segundos es el valor por defecto y el más compatible. HOTP cuenta eventos: escribe el valor del contador en el que está el servidor que verifica.
  3. Ajusta el hash y los dígitos a lo que verifica tu servidor (SHA-1 con 6 dígitos es lo habitual) y pulsa Calcular código. Cargar ejemplo RFC rellena el secreto de prueba del RFC 4226 con contador 0.
  4. Lee la revisión de parámetros: repite el tamaño del secreto decodificado, el contador usado y el número de dígitos, y avisa si el secreto baja de 20 bytes, si el periodo no es de 30 segundos o sobre el contador HOTP.
  5. Copia el código para compararlo o copia la URI otpauth:// para configurar una aplicación. En modo TOTP el código se recalcula en cada paso de tiempo; Limpiar devuelve todos los campos a su valor por defecto.

Qué es el código y dónde están los límites

RFC 4226 y RFC 6238 en el mismo formulario

El código es un HMAC sobre el contador en uso: el contador se firma con el secreto, el último byte de la firma selecciona una ventana de 4 bytes (truncamiento dinámico) y ese valor se reduce módulo 10^dígitos. TOTP es la misma función con el contador derivado del tiempo Unix dividido por el periodo; por eso un código TOTP cambia solo, mientras que uno HOTP espera al siguiente contador.

La herramienta coincide con los vectores de prueba publicados. Con el secreto del RFC, los contadores HOTP 0 a 5 devuelven 755224, 287082, 359152, 969429, 338314 y 254676. Un reloj dentro del paso de tiempo del RFC que contiene T=59 devuelve 94287082 con SHA-1 y 8 dígitos, y los vectores posteriores (T=1111111109 y T=20000000000) devuelven 07081804 y 65353130.

Qué puede y qué no puede decirte la revisión de parámetros

La revisión repite los parámetros usados y recuerda dos tareas del servidor: el contador HOTP debe incrementarse y guardarse de forma atómica en el verificador, y un secreto con menos de 20 bytes decodificados es demasiado corto para producción. Un periodo distinto de 30 segundos y SHA-256 o SHA-512 son válidos, pero menos aplicaciones y servidores los aceptan.

Aquí no se valida un código escrito a mano, no se mide la deriva de reloj del servidor ni se comprueba que el secreto sea el de tu cuenta. Compara un código con la implementación que lo va a verificar y toma el flujo de alta de la aplicación de autenticación como referencia.

Proceso local y URI de configuración

La URI sigue el formato de clave otpauth://: secreto, emisor, algoritmo (SHA1, SHA256 o SHA512), dígitos y periodo o contador; es la cadena que codifica un código QR. El secreto se reescribe en Base32 sin espacios ni relleno, y la etiqueta une el emisor y el nombre de la cuenta.

El HMAC y la URI se generan dentro de la pestaña y la herramienta no envía ninguna petición, así que el secreto y el código resultante no salen del navegador. Usa un secreto de prueba desechable al comparar implementaciones y guarda las semillas de producción en los sistemas autorizados a almacenarlas.

Herramientas recientes: