Cómo generar OTP
Aprende a generar códigos OTP temporales (TOTP) o por contador (HOTP) a partir de una clave Base32 utilizando el estándar criptográfico HMAC-SHA1.
Para generar un código OTP necesitas una clave secreta en Base32, seleccionar el algoritmo correspondiente (TOTP o HOTP) y definir los parámetros de longitud, intervalo o contador. El sistema procesa la clave mediante HMAC-SHA1 y devuelve un código numérico de un solo uso.
Parámetros necesarios para el cálculo
Antes de realizar el cálculo con el Generador OTP, debes reunir la información básica de autenticación:
- Clave secreta: cadena codificada en Base32. La herramienta admite mayúsculas o minúsculas, tolera la falta de relleno y descarta espacios en blanco adicionales.
- Modo de generación: TOTP para códigos temporales dependientes del reloj del sistema o HOTP para códigos vinculados a un contador incremental.
- Longitud numérica: 6 u 8 dígitos, siendo 6 el estándar predeterminado.
- Intervalo o contador: un periodo en segundos (de 1 a 86400, con 30 por defecto) para TOTP o un número entero positivo para HOTP.
Si estás configurando una clave compartida para añadirla a una aplicación móvil, también puedes crear un código de barras bidimensional con el Generador de Códigos QR para facilitar su importación.
Pasos para generar un código OTP
Sigue estas instrucciones sencillas para obtener el código de verificación:
- Introduce la clave en Base32 en el campo correspondiente.
- Elige el modo adecuado: selecciona TOTP si el servicio renueva el código periódicamente o HOTP si avanza mediante eventos.
- Configura la cantidad de dígitos requerida, habitualmente 6 cifras.
- Ajusta el periodo en segundos si utilizas TOTP (por defecto 30 segundos) o introduce el valor del contador si trabajas con HOTP.
- Haz clic en el botón de generación para calcular el código numérico y consultar el tiempo restante si has elegido el modo temporal.
Diferencias prácticas entre TOTP y HOTP
El modo TOTP toma la marca de tiempo Unix actual y la divide por el periodo configurado para obtener un contador dinámico. Por esta razón, el código cambia automáticamente tras agotarse el intervalo de segundos y muestra el tiempo restante de validez.
En cambio, el modo HOTP no consulta el reloj. El resultado depende exclusivamente del número de evento suministrado en el contador. Cada incremento manual produce un código distinto sin importar cuánto tiempo transcurra entre consultas.
Ejemplo de generación temporal
Supongamos que deseas verificar un acceso con una clave Base32 de prueba:
- Clave secreta: JBSWY3DPEHPK3PXP
- Modo: TOTP
- Longitud: 6 dígitos
- Periodo: 30 segundos
Al pulsar en generar, la herramienta procesa el intervalo del reloj y entrega un código numérico de 6 cifras junto con los segundos restantes para que finalice el ciclo actual. La clave no se vuelve a mostrar en pantalla para preservar la privacidad.
Limitaciones del generador
- No se genera ningún código si la clave introducida contiene caracteres ajenos a la codificación Base32.
- El cálculo no acepta valores no enteros, decimales o textos no numéricos en los campos de periodo o contador.
- El algoritmo está restringido a HMAC-SHA1 sobre cadenas Base32.
Errores frecuentes al calcular códigos
- Introducir decimales: configurar un periodo de 30,5 segundos o un contador fraccionario genera un fallo de validación. Usa siempre números enteros.
- Confundir el modo: seleccionar HOTP cuando la plataforma requiere un código temporal TOTP provocará que los valores no coincidan.
- Claves truncadas: omitir caracteres válidos de la clave secreta altera por completo el resumen criptográfico resultante.
Preguntas frecuentes
¿Cuál es el periodo predeterminado en el modo TOTP?
El intervalo estándar es de 30 segundos, aunque puedes establecer cualquier número entero entre 1 y 86400 segundos.
¿El modo HOTP depende de la hora del sistema?
No, HOTP calcula el código exclusivamente a partir del número de contador que indiques manualmente, sin consultar el reloj.
¿Es obligatorio incluir caracteres de relleno en la clave Base32?
No, el analizador procesa la cadena secreta correctamente con o sin caracteres de relleno finales.