desarrollocodificaciónweb

Qué es Base64, por qué existe y cuándo conviene usarlo

Base64 está en todas partes: en los JWT, en los adjuntos del correo, en las URI de datos y en las claves de API. Pero mucha gente que programa no sabe por qué existe ni cuándo debería usarlo. Aquí tienes el panorama completo.

·6 min de lectura

Por qué existe Base64

Base64 se inventó para resolver un problema concreto: mover datos binarios a través de sistemas pensados solo para texto. Los protocolos de correo (SMTP), las cabeceras HTTP y muchos sistemas de almacenamiento se crearon para manejar caracteres ASCII imprimibles. Los datos binarios (imágenes, ejecutables, certificados) contienen valores de byte que esos sistemas malinterpretan como caracteres de control, saltos de línea o marcas de fin de cadena.

Base64 codifica cualquier dato binario usando solo 64 caracteres imprimibles: de la A a la Z, de la a a la z, del 0 al 9, más + y /. El resultado siempre se puede incrustar sin riesgo en formatos de texto.

Cómo funciona

Base64 toma 3 bytes de entrada (24 bits) y los convierte en 4 caracteres. Cada carácter representa 6 bits de los datos originales.

  • M = 77 = 01001101
  • a = 97 = 01100001
  • n = 110 = 01101110

Todo junto: 010011010110000101101110

Partido en grupos de 6 bits: 010011 | 010110 | 000101 | 101110

Cada grupo corresponde a un carácter del alfabeto Base64: T, W, F, u → TWFu

Como 3 bytes se convierten en 4 caracteres, Base64 aumenta el tamaño de los datos alrededor de un 33 %.

El carácter de relleno

Si la entrada no es divisible entre 3, Base64 rellena la salida con caracteres =. Un solo carácter de relleno significa que el último grupo tenía 2 bytes de entrada; dos caracteres, que tenía 1.

Man → TWFu (sin relleno) Ma → TWE= (un relleno) M → TQ== (dos rellenos)

Base64 seguro para URL

El Base64 estándar usa + y /, que son caracteres especiales en las direcciones web. La variante segura para URL los sustituye por - y _ respectivamente, y normalmente prescinde del relleno. La verás en los JWT, en los tokens de OAuth y en cualquier cosa pensada para viajar en una cadena de consulta.

Cuándo usar Base64

  • Incrustar imágenes en HTML o CSS como URI de datos: src="data:image/png;base64,iVBOR..."
  • Codificar datos binarios dentro de cargas JSON (JSON no tiene tipo binario)
  • Enviar archivos adjuntos por correo (codificación MIME)
  • Guardar claves criptográficas y certificados en formato PEM
  • Codificar la cabecera y el contenido de un JWT
  • Como forma de cifrado u ocultación: Base64 se revierte sin ningún esfuerzo
  • Para "esconder" claves de API en el código del navegador, porque siguen siendo legibles
  • Como acortador de URL o codificación de contraseñas: para eso hay que usar hashes de verdad

Errores habituales

**Error 1: tratar Base64 como si fuera cifrado.** No lo es. Cualquiera decodifica una cadena Base64 en segundos. Es codificación, no cifrado.

**Error 2: codificar dos veces.** Si aplicas Base64 a una cadena que ya está en Base64, obtienes un galimatías. Comprueba siempre la entrada antes de codificar.

**Error 3: usar Base64 estándar en una URL.** Los caracteres + y / se malinterpretan. Usa la variante segura para URL o codifica la salida con porcentajes.

**Error 4: olvidar el 33 % de tamaño extra.** Incrustar imágenes grandes como URI de datos infla mucho el peso de la página. Para imágenes de más de unos pocos kilobytes, casi siempre es mejor un archivo externo con su caché.

Decodificar Base64 en la práctica

El codificador y decodificador Base64 de NoxaKit hace las dos operaciones al instante en el navegador, muy útil para inspeccionar un JWT, depurar la respuesta de una API o mirar qué hay dentro de un certificado PEM. El visor de imágenes en Base64 decodifica las imágenes codificadas para que veas qué guarda realmente una URI de datos.

Prueba estas herramientas gratuitas

Más artículos