Codificador/Decodificador Base64

Codificar y decodificar cadenas Base64

Texto plano
Base64
Entendiendo Codificacion Base64
TL;DR

Base64 es un esquema de codificacion de binario a texto que convierte datos binarios en un conjunto de 64 caracteres ASCII imprimibles. Se usa para transmitir de forma segura datos binarios a traves de protocolos basados en texto como correo electronico (MIME), HTML (data URIs) y headers HTTP. Base64 es codificacion, no cifrado — cualquiera puede decodificarlo.

Que es Base64?

Base64 es un esquema de codificacion de binario a texto que representa datos binarios usando un conjunto de 64 caracteres ASCII. Fue disenado para asegurar que los datos binarios puedan transmitirse de forma segura a traves de sistemas basados en texto que pueden no manejar correctamente los bytes crudos — como correo electronico (SMTP), JSON, XML y parametros de URL.

El nombre “Base64” se refiere al alfabeto de 64 caracteres usado para la codificacion. A diferencia del hexadecimal (Base16), que usa 16 caracteres, Base64 es mas compacto — representa 6 bits por caracter en lugar de 4.

Como funciona la codificacion Base64

El proceso de codificacion opera en grupos de 3 bytes (24 bits) a la vez:

  1. Tomar 3 bytes de entrada (24 bits en total)
  2. Dividir en 4 grupos de 6 bits cada uno
  3. Mapear cada valor de 6 bits a un caracter del alfabeto Base64
  4. Si la longitud de entrada no es multiplo de 3, rellenar con caracteres =

El alfabeto Base64

Rango de indicesCaracteresCantidad
0-25A a Z26
26-51a a z26
52-610 a 910
62+1
63/1
Relleno=

Variante Base64URL

Para URLs y nombres de archivo, los caracteres estandar + y / son problematicos. La variante Base64URL (RFC 4648 §5) los reemplaza:

  • + se convierte en -
  • / se convierte en _
  • El relleno = generalmente se omite

Esta variante se usa en JWT, tokens OAuth y en cualquier lugar donde los tokens aparecen en URLs.

Relleno explicado

Base64 trabaja en grupos de 3 bytes. Cuando la entrada no se divide exactamente entre 3:

Bytes de entradaSalida Base64Relleno
3 bytes4 caracteresNinguno
2 bytes3 caracteres + =1 relleno
1 byte2 caracteres + ==2 rellenos

Casos de uso comunes

  • Adjuntos de correo (MIME): Los archivos binarios se codifican en Base64 para viajar de forma segura a traves de SMTP, que solo soporta ASCII de 7 bits
  • Data URIs: Incorporar imagenes directamente en HTML o CSS como data:image/png;base64,iVBORw0KGgo...
  • HTTP Basic Auth: El header Authorization: Basic transporta usuario:contrasena en Base64
  • Payloads JSON: Datos binarios (archivos, imagenes, certificados) pueden incorporarse en cadenas JSON via Base64
  • Tokens JWT: Cada segmento (header, payload, signature) esta codificado en Base64URL

Prueba estos ejemplos

Texto ASCII Válido

Texto ASCII simple codificado en Base64 produce 'SGVsbG8sIFdvcmxkIQ=='. El relleno == indica que la longitud de entrada no era multiplo de 3 bytes.

Hello, World!
UTF-8 con caracteres especiales Válido

Texto UTF-8 con caracteres acentuados y emoji. Los caracteres multibyte producen una salida Base64 mas larga ya que cada caracter puede ocupar de 2 a 4 bytes.

Café ☕ résumé
Cadena vacia Inválido

Una entrada vacia no produce salida. La codificacion Base64 requiere al menos un byte de datos de entrada.