Base 32: qué es, cómo funciona y por qué se usa
Base 32: qué es, cómo funciona y por qué se usa

Base 32: qué es, cómo funciona y por qué se usa
La Base 32 es un método de codificación que representa datos binarios usando un conjunto de
32 caracteres legibles. Su objetivo es convertir bytes —que a menudo no son seguros ni cómodos de manipular en
texto— en una forma textual más robusta y portable. Aunque puede parecer un primo lejano de Base64 o Base16 (hexadecimal),
Base32 tiene un equilibrio particular entre densidad, legibilidad y tolerancia a errores
que la hace útil en distintos contextos: identificadores compactos, claves de un solo uso (TOTP), sistemas que
distinguen mal entre mayúsculas y minúsculas, o entornos donde ciertos símbolos no están permitidos.
Idea central en pocas palabras
Toda codificación de “base N” toma la secuencia de bits original y la reagrupa para expresarla con un alfabeto
de N símbolos. En Base32, cada carácter codifica exactamente 5 bits (porque 25 = 32).
Como los bytes tienen 8 bits, la codificación separa la entrada en bloques y los mapea a un alfabeto fijo. Al final,
si sobran bits, se aplica padding (relleno) para completar el último bloque y mantener la estructura.
El alfabeto de Base32 (RFC 4648)
La especificación más común hoy es la de la RFC 4648. Su alfabeto está compuesto por las letras
mayúsculas A–Z y los dígitos 2–7:
Alfabeto: ABCDEFGHIJKLMNOPQRSTUVWXYZ234567
Padding: =
La elección de 2–7 (en vez de 0–9) evita confusiones típicas: por ejemplo, la “O” con el cero, o la “I” con el uno.
Además, al ser sensible a mayúsculas en la definición, es habitual normalizar a mayúsculas para evitar errores
humanos al transcribir.
Cómo se agrupan los bits
Base32 opera de manera natural con grupos de 5 bytes (40 bits), porque 40 es múltiplo de 5. Esos 40 bits se
dividen en 8 bloques de 5 bits, que se convierten en 8 caracteres Base32. Si la longitud no es múltiplo de 5 bytes,
se añaden uno o varios caracteres de padding “=” al final para indicar el relleno.
Ejemplo sencillo
Tomemos la palabra hola en ASCII:
"h" = 0x68 = 01101000
"o" = 0x6F = 01101111
"l" = 0x6C = 01101100
"a" = 0x61 = 01100001
Son 4 bytes = 32 bits. Al agrupar en bloques de 5 bits obtenemos 6 grupos completos (30 bits) y sobran 2 bits.
Esos 2 bits se rellenan con ceros a la derecha para formar el sexto carácter, y luego se utiliza padding para
completar hasta un múltiplo de 8 caracteres. El resultado (dependiendo de la implementación) será una cadena de
8 símbolos, con “=” al final señalando cuántos bits eran de relleno. El detalle exacto puede variar ligeramente según
el manejo de los bits residuales, pero la idea clave es esa: rebanar en 5 bits y mapear al alfabeto.
¿Por qué usar Base32 en lugar de Base64 o hex?
- Legibilidad y dictado: Base32 evita caracteres confusos y no necesita símbolos como “+” o “/”
(presentes en Base64), que a veces causan problemas en URLs, sistemas de archivos o cuando se dicta por voz. - Insensibilidad opcional a mayúsculas/minúsculas: Aunque el estándar define mayúsculas, en muchos
casos se puede tratar como insensible al caso para facilitar la entrada por humanos, algo más natural que con Base64. - Compatibilidad con sistemas limitados: En entornos que no aceptan ciertos signos de puntuación o
que esperan solo letras y números, Base32 encaja mejor que Base64. - Coste/beneficio razonable: Es más compacta que hex (Base16) y más robusta al tecleo humano que
Base64, aunque sea un poco menos compacta que esta última.
Uso típico: códigos TOTP y secretos
Una aplicación muy visible de Base32 son los secretos TOTP (Time-based One-Time Passwords), los códigos de
verificación en dos pasos. Muchas apps muestran la clave semilla en Base32 porque:
- Es más fácil leerla, pronunciarla y transcribirla sin confundir caracteres.
- Suele mostrarse espaciada en bloques (p. ej., 4 o 8 caracteres) para evitar errores.
- No usa símbolos que puedan romper formatos de texto o URLs.
Variantes conocidas
- RFC 4648 Base32: La más extendida hoy, con el alfabeto A–Z y 2–7. Usa “=” como relleno.
- Base32 Crockford: Diseñada para minimizar errores humanos. Ignora mayúsculas/minúsculas, evita
caracteres ambiguos (como I, L, O) y admite detectar errores con guiones o caracteres de verificación opcionales.
No utiliza “=” para el padding y a menudo permite introducir 0 por O y 1 por I automáticamente.
¿Qué aspecto tiene una cadena Base32?
JBSWY3DPEHPK3PXP
MFRGGZDFMZTWQ2LK
KRUGS4ZANFZSAYJA
Es habitual que se presenten en mayúsculas y en bloques cortos para facilitar su uso manual. Si ves signos como
“+”, “/” o “-”, probablemente no sea Base32 estándar, sino otra codificación (Base64, Base64 URL-safe, etc.).
Ventajas y desventajas
Ventajas
- Alfabeto simple y estable, apto para múltiples sistemas.
- Mejor para dictar o teclear que Base64, menos errores humanos.
- Más compacta que hexadecimal, con una relación tamaño/legibilidad equilibrada.
Desventajas
- Menos compacta que Base64: el texto crece aproximadamente un 60% frente al binario, frente al ~33% de Base64.
- El padding “=” puede ser incómodo en algunos contextos (aunque muchas implementaciones lo toleran opcional).
- No es un mecanismo de seguridad; solo transforma datos. No cifra ni firma.
Relación de tamaño aproximada
Para hacerse una idea: cada 5 bytes de entrada producen 8 caracteres Base32. Dicho de otro modo, la longitud
resultante suele ser alrededor de 1,6× la original en bytes, sin contar saltos de línea ni espacios.
Esta sobrecarga es el precio de lograr un alfabeto amigable y ampliamente aceptado.
¿Qué pasa con el padding “=”?
El “=” indica que la última agrupación no estaba completa. En transmisión o almacenamiento, algunas herramientas
lo eliminan y otras lo exigen. Si lo quitas, asegúrate de que el receptor lo tolere o que tenga reglas claras para
reconstruir los bits faltantes. En contextos humanos (por ejemplo, teclear a mano), es común omitirlo.
Buenas prácticas de implementación
- Normaliza a mayúsculas al decodificar, y considera ignorar espacios y guiones.
- Valida que solo aparezcan caracteres del alfabeto esperado (y, si procede, el “=”).
- Si la entrada proviene de humanos, contempla la variante Crockford o mapeos de corrección (O→0, I/L→1).
- Documenta si usas padding obligatorio u opcional para evitar sorpresas en la interoperabilidad.
Comparación rápida con otras bases
- Base16 (hex): Excelente para depuración, fácil de leer por técnicos, pero poco densa.
- Base64: Más compacta que Base32, pero con caracteres que pueden romper URLs o ser confundibles al dictar.
- Base58: Pensada para minimizar errores visuales y evitar caracteres ambiguos, muy usada en cripto;
no es estándar RFC para datos generales y su implementación es algo más específica.
Pequeño ejemplo conceptual de codificación
Supón que tienes los bytes (en hex): 48 65 6C 6C 6F (que es “Hello”). En binario:
01001000 01100101 01101100 01101100 01101111
Concatenas los bits y los partes en grupos de 5:
01001 00001 10010 10110 11000 11011 00110 1111
El último grupo tiene solo 4 bits; se rellena con un cero a la derecha para completar 5. Cada grupo (0–31) se mapea
al alfabeto Base32. El resultado será una cadena de 8 caracteres, posiblemente terminada con “=” para indicar
el relleno. Aunque aquí omitimos los índices numéricos exactos, la mecánica queda ilustrada: agrupar → mapear → rellenar.
¿Es segura la Base32?
No. Base32 no cifra ni oculta realmente la información: cualquiera puede decodificarla. Sirve para transporte y
compatibilidad, no para confidencialidad. Si necesitas seguridad, utiliza cifrado (por ejemplo, AES) o
firmas digitales. Aun así, Base32 puede ser una capa externa útil al empaquetar claves, hashes o binarios en
formatos de texto.
Cuándo elegir Base32
- Cuando esperas entrada/salida humana y quieres minimizar confusiones.
- Cuando el entorno restringe símbolos (sistemas viejos, códigos leídos por voz, QR con limitaciones).
- Cuando usas estándares que la especifican (p. ej., secretos TOTP o ciertos identificadores).
Conclusión
La Base32 es una herramienta sobria y práctica para convertir binario en texto manejable. Su alfabeto deliberadamente sencillo, su tolerancia a entornos hostiles a ciertos símbolos y su equilibrio entre legibilidad y densidad la hacen muy atractiva para casos donde humanos y máquinas cooperan. Si ya usas Base64 para paquetes binarios generales, quizá no necesites Base32; pero cuando el canal es frágil, el usuario teclea a mano o el estándar lo dicta, Base32 brilla. Entender cómo agrupa los bits, cómo funciona el padding y qué variantes existen te permitirá escoger la codificación correcta para cada situación, evitando errores tontos y ganando interoperabilidad.