Codificador/Decodificador Base64
Codificar y decodificar cadenas Base64
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:
- Tomar 3 bytes de entrada (24 bits en total)
- Dividir en 4 grupos de 6 bits cada uno
- Mapear cada valor de 6 bits a un caracter del alfabeto Base64
- Si la longitud de entrada no es multiplo de 3, rellenar con caracteres
=
El alfabeto Base64
| Rango de indices | Caracteres | Cantidad |
|---|---|---|
| 0-25 | A a Z | 26 |
| 26-51 | a a z | 26 |
| 52-61 | 0 a 9 | 10 |
| 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 entrada | Salida Base64 | Relleno |
|---|---|---|
| 3 bytes | 4 caracteres | Ninguno |
| 2 bytes | 3 caracteres + = | 1 relleno |
| 1 byte | 2 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: Basictransportausuario:contrasenaen 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 simple codificado en Base64 produce 'SGVsbG8sIFdvcmxkIQ=='. El relleno == indica que la longitud de entrada no era multiplo de 3 bytes.
Hello, World! 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é Una entrada vacia no produce salida. La codificacion Base64 requiere al menos un byte de datos de entrada.