DevToolPal
ES

Generador de códigos TOTP / HOTP

Genera códigos de autenticación en dos pasos (TOTP y HOTP) a partir de un secreto Base32 o una URI otpauth://, con SHA-1/256/512, 6–8 dígitos y cuenta atrás en vivo.

Se ejecuta en local, nunca se sube

Opciones

Tipo
Dígitos
Intervalo

Secreto (Base32) o URI otpauth://

Códigos

El resultado aparece aquí

Qué hace

Las apps de autenticación en dos pasos como Google Authenticator, Microsoft Authenticator y 1Password muestran códigos de seis dígitos que cambian cada 30 segundos. Cada código es una contraseña de un solo uso calculada a partir de un secreto compartido: TOTP (RFC 6238) usa la hora y HOTP (RFC 4226) usa un contador. Esta herramienta calcula los mismos códigos a partir del secreto, para probar una configuración 2FA, depurar una implementación en el servidor o comprobar cuál debería ser un código.

Muestra el código actual con una cuenta atrás en vivo, además del código anterior y el siguiente, que los servidores suelen aceptar para cubrir pequeñas diferencias de reloj.

Cómo se usa

  1. Pega el secreto Base32 (letras A–Z y dígitos 2–7; los espacios y las mayúsculas no importan) o una URI otpauth:// completa de un código QR. Pulsa Ejemplo para probarlo.
  2. Elige TOTP o HOTP y ajusta el algoritmo, los dígitos y el intervalo para que coincidan con la cuenta. Los ajustes de una URI otpauth tienen prioridad.
  3. Para HOTP, escribe el contador y usa Contador +1 para avanzar entre códigos.
  4. Copia el código actual. La cuenta atrás indica cuánto tiempo sigue siendo válido.

Ejemplo

El secreto de demostración JBSWY3DPEHPK3PXP es la forma Base32 de los bytes “Hello!” seguidos de 0xDEADBEEF. La URI siguiente, tal como se codifica en un código QR, describe una cuenta que lo usa con los ajustes por defecto:

otpauth://totp/Example:alice@example.com?secret=JBSWY3DPEHPK3PXP&issuer=Example&algorithm=SHA1&digits=6&period=30

En el tiempo Unix 1700000000 este secreto da el código 324 550, y a la ventana le quedan 10 segundos.

Cómo se calcula el código

El secreto se decodifica de Base32 a bytes. En TOTP, el contador es el tiempo Unix en segundos dividido entre el intervalo y redondeado hacia abajo. El contador se escribe como 8 bytes y se firma con HMAC usando el secreto. El truncamiento dinámico elige 4 bytes de la salida HMAC según su último nibble, y el número se reduce a la cantidad de dígitos pedida, conservando los ceros iniciales.

Preguntas frecuentes

› ¿Por qué mi código no coincide con el de mi app de autenticación?

Los códigos TOTP dependen del reloj, así que primero comprueba que la hora del dispositivo se ajusta automáticamente. Después comprueba que el algoritmo, los dígitos y el intervalo coinciden con la cuenta. La mayoría de servicios usa SHA-1, 6 dígitos y 30 segundos, y las apps de autenticación ignoran otros ajustes salvo que el código QR los indique.

› ¿Qué diferencia hay entre TOTP y HOTP?

TOTP (RFC 6238) usa como contador la hora actual dividida entre el intervalo, por lo que el código cambia cada 30 segundos. HOTP (RFC 4226) usa un contador que aumenta en uno cada vez que se usa un código. Ambos pasan el secreto y el contador por HMAC y conservan los últimos 6 a 8 dígitos.

› ¿Se guarda o se envía mi secreto?

No. Los códigos se calculan en tu navegador con la API Web Crypto. El secreto no se guarda, no se escribe en la barra de direcciones y no se incluye en los enlaces para compartir; un enlace compartido solo lleva los ajustes. Aun así, un secreto 2FA da acceso completo al segundo factor, así que pega solo secretos que sean tuyos.

› ¿Puedo usarlo para añadir autenticación en dos pasos a mi aplicación?

Sí. Pulsa Secreto aleatorio para crear un secreto Base32 de 160 bits, ponlo en una URI otpauth:// o en un código QR para tus usuarios y compara los códigos que genera tu servidor con los que se muestran aquí. Los servidores suelen aceptar también el código anterior y el siguiente para tolerar desfases de reloj.