Cómo se usa
- Escriba la clave secreta de la página de dos pasos de su servicio en el campo, o pegue el texto otpauth:// que contiene su código QR. Pulse Mostrar para comprobar lo que escribió.
- Elija el Hash, los Dígitos y el Periodo que indica el servicio. Muchos servicios usan los valores por defecto del formato Key URI: SHA-1, 6 dígitos y 30 segundos.
- En un servicio basado en contador, elija Basado en contador (HOTP) e indique el contador; Contador + 1 lo avanza.
- Escriba el Código actual antes de que se agote el Tiempo restante, y compruebe los códigos Anterior y Siguiente si el reloj de su dispositivo va un poco desfasado.
Cómo se genera un código
HOTP (RFC 4226) toma la clave secreta y un contador, calcula un HMAC del contador con el hash y toma cuatro bytes de él (truncamiento dinámico). El número que dan esos bytes, módulo 10 elevado a los dígitos, es el código.
TOTP (RFC 6238) es HOTP con un contador que sale del tiempo: la hora Unix en segundos, dividida entre el periodo y redondeada hacia abajo. Un código nuevo empieza en cada periodo, así que los dos extremos necesitan un reloj preciso.
TOTP = HOTP(clave, parte entera de (tiempo unix / periodo)); HOTP = truncar(HMAC(clave, contador)) mod 10^dígitos
Claves secretas y URI otpauth://
La clave secreta es un texto Base32 (RFC 4648): las letras de la A a la Z y los dígitos del 2 al 7. Los espacios se ignoran y el relleno puede omitirse. Una clave con un carácter fuera de ese conjunto, o con una longitud imposible, se rechaza.
Un URI otpauth:// (Key URI Format de Google) contiene el tipo, la etiqueta, la clave y, de forma opcional, el emisor, el algoritmo, los dígitos, el periodo y el contador. Los ajustes que faltan toman los valores por defecto del formato: SHA1, 6 dígitos, 30 segundos y contador 0.
Cómo se comprobó la página
El código se prueba con los valores de prueba del apéndice D de la RFC 4226 (contadores de 0 a 9) y del apéndice B de la RFC 6238 (seis veces, con SHA-1, SHA-256 y SHA-512 con ocho dígitos). El HMAC lo calcula SubtleCrypto de su navegador.
Ejemplo resuelto: la clave de prueba de la RFC 6238
La clave de prueba de la RFC es el texto 12345678901234567890, que en Base32 es GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ. En la hora Unix 59, con un periodo de 30 segundos, el paso 1 de TOTP da el código de ocho dígitos 94287082 para SHA-1.
Con seis dígitos, el mismo paso da 287082, el código del contador 1 de la RFC 4226; son los últimos seis dígitos del valor de ocho.
Preguntas frecuentes
¿Se envía la clave o el código a un servidor?
No. El código se calcula en su navegador, y la página no hace ninguna petición que contenga la clave o el código. No se guarda nada, y al recargar se olvidan ambos.
¿Debo pegar aquí la clave secreta de mi cuenta real?
Solo en una página en la que confíe, y solo si nadie más puede ver su pantalla. La app de autenticación es el lugar normal para una cuenta real, porque guarda la clave para el uso diario; esta página sirve para sus propias herramientas y para códigos que necesite una sola vez.
¿Por qué el código cambia cada 30 segundos?
Un código basado en tiempo (TOTP) usa el número de periodos desde la época Unix, así que un código nuevo empieza en cada periodo. La cuenta atrás muestra cuánto dura el actual.
¿Por qué mi código no coincide con la app del servicio?
Revise la clave (solo Base32), el hash, los dígitos y el periodo, que indica el servicio; después compruebe que el reloj de su dispositivo es correcto, porque un código basado en tiempo depende de él. Los códigos anterior y siguiente ayudan a ver una pequeña diferencia de reloj.
¿Qué hash debo elegir?
Elija el que indique el servicio. SHA-1 es el valor por defecto de HOTP en la RFC 4226 y del formato otpauth; la RFC 6238 admite también SHA-256 y SHA-512 para TOTP.
¿Cuál es la diferencia entre TOTP y HOTP?
TOTP usa el tiempo, así que el código cambia en cada periodo. HOTP usa un contador que avanza en cada uso, así que el código se mantiene hasta que cambia el contador.
¿Qué hace el texto otpauth://?
Lleva los ajustes de una clave de dos factores en el Key URI Format, normalmente dentro de un código QR. Al pegarlo aquí se rellenan la clave, el hash, los dígitos, el periodo y el contador.
Fuentes
- RFC 4226: HOTP, algoritmo de contraseña de un solo uso basado en HMAC (en inglés)
- RFC 6238: TOTP, algoritmo de contraseña de un solo uso basado en tiempo (en inglés)
- RFC 4648: codificaciones de datos Base16, Base32 y Base64 (en inglés)
- Google Authenticator: Key Uri Format (en inglés)
- MDN: SubtleCrypto.sign() (en inglés)
Cifras y texto revisados por última vez el martes, 10 de noviembre de 2026.