Subir un archivo
  1. base64hub
  2. Otras bases
  3. Base64 a Base32

Base64 a Base32 para secretos TOTP

Pega un secreto en Base64 y obtén los mismos bytes en Base32 RFC 4648, listos para una app autenticadora o un enlace otpauth://. Desmarca el relleno y el resultado puede ir directo al parámetro secret=.

Gratis sin registro, sin límites Local no se sube nada Listo para TOTP Base32 sin relleno para enlaces otpauth Actualizado 27 oct 2026
Entrada 0Bytes 0 BSalida 0

Se procesa en tu navegador. Esta página no puede enviar tus datos a ninguna parte – cómo lo sabemos

Cómo convertir Base64 a Base32

  1. Pega el Base64 en Entrada · Base64. Se admiten caracteres URL-safe (-, _), relleno ausente y saltos de línea.
  2. Lee el resultado en Salida · Base32 (RFC 4648).
  3. Para un enlace otpauth:// o una app autenticadora, desmarca Relleno (=) bajo la salida.
  4. Haz clic en Copiar salida. Base32 (RFC 4648) → Base64 en el selector de dirección convierte en sentido contrario, igual que la página Base32 a Base64.

Los bytes intermedios no cambian. Entra una clave de 20 bytes y sale una clave de 20 bytes, como muestra el contador Bytes bajo la herramienta.

Ejemplos

Base64Base32Bytes
iEwO+V01Llzjb4MxBUtgEuCNW8o=RBGA56K5GUXFZY3PQMYQKS3ACLQI2W6K20
iEwO-V01Llzjb4MxBUtgEuCNW8oRBGA56K5GUXFZY3PQMYQKS3ACLQI2W6K20, entrada URL-safe y sin relleno
MTIzNDU2Nzg5MDEyMzQ1Njc4OTA=GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ20, el secreto de prueba de RFC 6238
SGVsbG8h3q2+7w==JBSWY3DPEHPK3PXP10

Las dos cadenas de las primeras filas no se parecen en nada, y es normal: Base64 usa 6 bits por carácter y Base32 usa 5, así que los caracteres nunca coinciden.

El error que hay que evitar es codificar los caracteres Base64 como texto. Si pegas iEwO+V01Llzjb4MxBUtgEuCNW8o= en un codificador de texto a Base32 obtienes NFCXOTZLKYYDCTDM…, que es Base32 válido, pero de los propios 28 caracteres. Los códigos del autenticador generados con eso nunca coincidirán con los del servidor.

Configurar TOTP a partir de un secreto Base64

El código del servidor suele guardar el secreto compartido en Base64, o lo genera con un comando como este:

openssl rand -base64 20

Para darlo de alta en una app autenticadora, conviértelo aquí y construye la URI de clave:

otpauth://totp/Example:alice@example.com?secret=RBGA56K5GUXFZY3PQMYQKS3ACLQI2W6K&issuer=Example

algorithm, digits y period se pueden añadir como parámetros; sin ellos, las apps asumen SHA-1, 6 dígitos y 30 segundos. Convierte el enlace en un código QR con cualquier herramienta QR local, o deja que el usuario teclee a mano el secreto Base32. El secreto son los mismos bytes que tu servidor pasa a HMAC, así que los códigos coinciden sin tocar el servidor.

Si necesitas un secreto nuevo en lugar de uno existente, genera 20 bytes aleatorios en Base64 con el generador de Base64 aleatorio (ajuste Personalizado) y conviértelos aquí.

Longitudes para tamaños de clave habituales

ClaveBase64Base32, sin rellenoBase32 con =
10 bytes (80 bits)161616
16 bytes (128 bits)242632
20 bytes (160 bits)283232
32 bytes (256 bits)445256

Los tamaños múltiplos de 5 bytes, como 10 y 20, dan Base32 sin ningún relleno.

La misma conversión en Python

import base64

secret_b64 = "iEwO+V01Llzjb4MxBUtgEuCNW8o="
base64.b32encode(base64.b64decode(secret_b64)).decode().rstrip("=")
# 'RBGA56K5GUXFZY3PQMYQKS3ACLQI2W6K'

Para entrada URL-safe usa base64.urlsafe_b64decode, y añade antes el relleno = si se eliminó. Más sobre esto en Base64 en Python.

Preguntas frecuentes

¿Por qué las apps autenticadoras necesitan Base32 y no Base64?

El formato de URI de clave otpauth://, que las apps leen de los códigos QR, define el secreto en Base32. Además tiene que poder teclearse cuando el QR no se puede escanear, y Base32 no tiene +, / ni mezcla de mayúsculas y minúsculas con las que equivocarse.

¿El secreto Base32 debe llevar relleno =?

En un enlace otpauth://, no: el formato de URI de clave indica que el relleno debe omitirse. Desmarca Relleno (=). Un secreto de 20 bytes ocupa 32 caracteres y de todos modos no necesita relleno.

¿Qué longitud debe tener un secreto TOTP?

RFC 4226 exige al menos 128 bits y recomienda 160 bits, es decir, 20 bytes: 28 caracteres Base64 o 32 caracteres Base32.

¿Convertir un secreto a Base32 supone un riesgo de seguridad?

La codificación no añade ni quita protección; cualquiera que tenga la cadena en cualquiera de las dos formas puede generar tus códigos. El riesgo está en dónde la pegas. Esta página la convierte en el navegador y su Content Security Policy bloquea las peticiones de red que no sean las del contador de visitas de Cloudflare.