Que es Base64?
Base64 es un esquema de codificacion que convierte datos binarios en una cadena de 64 caracteres ASCII imprimibles. Los 64 caracteres son: A-Z, a-z, 0-9, + y /, mas = como caracter de relleno.
Fue disenado para resolver un problema especifico: muchos protocolos de transporte y sistemas de almacenamiento fueron creados para manejar texto, no datos binarios arbitrarios. Cuando necesita mover contenido binario (imagenes, archivos, claves) a traves de un canal solo de texto, Base64 es la solucion estandar.
Como funciona (de forma sencilla)
Base64 toma cada 3 bytes (24 bits) de entrada y los codifica como 4 caracteres. Esto significa:
- 3 bytes de entrada producen 4 caracteres de salida
- Toda cadena codificada en Base64 es aproximadamente un 33 % mas grande que el binario original
El proceso es deterministico e invertible, es una codificacion, no un cifrado. Cualquiera puede decodificar una cadena Base64 de vuelta a los bytes originales.
Casos de uso comunes
1. Incrustar imagenes en HTML o CSS
En lugar de enlazar a un archivo de imagen externo, puede incrustarlo directamente:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUh..." />
Esto elimina una solicitud HTTP, lo que puede acelerar iconos pequenos o imagenes en linea. La contrapartida: el archivo HTML se vuelve mas grande y la imagen no puede almacenarse en cache de forma independiente.
2. Tokens JWT (JSON Web Tokens)
Los JWTs usan Base64URL (una variante que reemplaza + con - y / con _) para codificar su cabecera y carga util. Esto hace que el token sea seguro para usar en URLs y cabeceras HTTP.
3. Adjuntos de correo electronico (MIME)
Los protocolos de correo electronico eran originalmente solo de texto. MIME usa Base64 para codificar archivos adjuntos binarios, PDFs, imagenes, documentos Word.
4. Autenticacion de API
La autenticacion HTTP basica codifica las credenciales como usuario:contrasena en Base64:
Authorization: Basic dXNlcjpwYXNzd29yZA==
Nota: esto no es cifrado. Las credenciales son trivialmente decodificables. HTTPS es lo que proporciona seguridad, no Base64.
5. Almacenar datos binarios en JSON o bases de datos
JSON no tiene un tipo binario nativo. Base64 es la forma estandar de incluir blobs binarios dentro de una carga JSON.
Lo que Base64 NO es
Base64 no es cifrado. No proporciona ninguna seguridad. Nunca lo use para ofuscar datos sensibles. Base64 no es compresion. Hace los datos mas grandes. Base64 no es hashing. Es completamente reversible.
Base64 seguro para URL vs Base64 estandar
El Base64 estandar usa + y /, que tienen significados especiales en URLs. Base64URL los reemplaza por - y _. Si trabaja con JWTs o tokens URL, use siempre Base64URL.
Codificar y decodificar en el navegador
Puede codificar y decodificar cadenas Base64 usando el codificador/decodificador Base64 de este sitio, pegue su texto, convierta instantaneamente, sin datos enviados a servidores.
Resumen
Base64 es una codificacion binario-a-texto que hace que los datos binarios sean seguros para transmitir a traves de sistemas basados en texto. Aparece en JWTs, adjuntos de correo, imagenes incrustadas y cabeceras de autenticacion. Anade un ~33 % de sobrecarga de tamano y no proporciona seguridad por si solo.