Codificación Base64 explicada: qué es y cuándo usarla
Base64 está en todas partes en el desarrollo web: integrado en encabezados de correo electrónico, integrado en URI de datos, utilizado en tokens de autenticación y envuelto en archivos binarios en protocolos de texto. ¿Pero qué es realmente? Y si codifica datos, ¿no los hace eso seguros? La respuesta es no: Base64 es codificación, no encriptación. Es una forma de representar datos binarios o arbitrarios como texto ASCII simple, nada más. Comprender cuándo y por qué usarlo puede aclarar muchos momentos confusos del desarrollo.
¿Qué es Base64?
Base64 es un método para codificar datos binarios en 64 caracteres ASCII seguros: las letras A–Z, a–z, dígitos 0–9, signos más y barras. Funciona tomando entradas binarias (ya sea texto, imágenes o bytes sin formato) y dividiéndolas en fragmentos de 6 bits. Cada fragmento se convierte en un índice del alfabeto Base64, por lo que la salida siempre es texto legible. El "64" se refiere al tamaño del alfabeto: 26 + 26 + 10 + 2 = 64 caracteres.
¿Por qué 64? Porque esos caracteres están seguros en casi todos los sistemas: correo electrónico, terminales antiguos, XML, JSON y texto sin formato. Un archivo binario puede dañarse en tránsito si se malinterpretan bytes especiales; Base64 garantiza que la salida se mantenga sin cambios a través de cualquier canal basado en texto. Puede codificar y decodificar Base64 instantáneamente en tu navegador sin cargar tus datos en ningún lado.
Base64 no es cifrado
Ésta es la distinción fundamental: Base64 codifica la apariencia de los datos, pero cualquiera puede revertirla. Si codifica Base64 la contraseña secret123, se convierte c2VjcmV0MTIz - pero eso no es seguro. La decodificación es igualmente trivial. Base64 es una ofuscación para la transmisión, no una protección para la seguridad. Si necesita mantener los datos en secreto, utilice cifrado (como AES), no Base64. Base64 es la forma de enviar datos cifrados de forma segura a través de un canal de texto, pero no es el cifrado en sí.
Usos comunes de Base64
Base64 es estándar en varios escenarios del mundo real:
- URI de datos. En lugar de vincular a un archivo de imagen, puede incrustar la imagen directamente en HTML o CSS como un URI de datos:
data:image/png;base64,iVBORw0KG…. Esto evita una solicitud HTTP adicional, útil para íconos pequeños o cuando los recursos no se pueden alojar por separado. - Archivos adjuntos de correo electrónico. SMTP (protocolo de correo electrónico) fue diseñado para texto. Los archivos adjuntos binarios se codifican en Base64 antes de enviarlos y luego su cliente de correo los decodifica al recibirlos.
- Tokens de autenticación. Muchas API utilizan Base64 para tokens, no por seguridad, sino porque los tokens suelen ser datos binarios que deben transmitirse como texto legible en encabezados o URL.
- Incrustar archivos en JSON o XML. Si necesita incluir un blob binario (un PDF, una hoja de cálculo, un archivo) en una respuesta de API JSON, Base64 lo codifica como una cadena que no romperá la estructura JSON.
El tamaño de la sobrecarga: Base64 hace que los datos sean más grandes
Una desventaja: la salida Base64 es aproximadamente un 33% mayor que el binario original. Esto se debe a que está empaquetando 8 bits de entrada en fragmentos de 6 bits, y se necesita relleno cuando la longitud de entrada no es múltiplo de 3. Entonces, si está incrustando una imagen de 300 KB como un URI de datos, la versión Base64 tiene aproximadamente 400 KB, es decir, es más lenta de cargar y analizar. Para íconos pequeños, esta sobrecarga vale la solicitud HTTP guardada; para archivos grandes, normalmente es mejor vincularlos por separado.
Variantes y codificaciones relacionadas.
Usos estándar de Base64 + y /, que tienen significados especiales en URL y nombres de archivos. Base64 seguro para URL sustitutos - y _ en su lugar, lo hace seguro para su uso en rutas y cadenas de consulta sin codificación porcentual. Si está creando un esquema de codificación de URL personalizado, considere si codificación de URL o Base64 seguro para URL se adapta a sus necesidades.
Base64 es una de varias codificaciones que resuelven diferentes problemas. Codificación hexadecimal representa binario como dos caracteres legibles por byte (más lento de decodificar, pero sin relleno y legible por humanos), a menudo utilizado en hashes y sumas de verificación. entidades HTML codificar caracteres especiales como < y & para que se muestren correctamente en las páginas web, un problema diferente al del transporte binario arbitrario. Cada codificación es una herramienta para un trabajo específico.