Guías

¿Qué es Base64? Origen, funcionamiento y usos

Descubre qué es Base64, por qué nació, cómo convierte 3 bytes en 4 caracteres y cuándo conviene usarlo.

Base64 en una frase

Base64 es una codificación de binario a texto: convierte cualquier secuencia de bytes en una cadena formada por un alfabeto pequeño y ampliamente compatible. No sabe si esos bytes son una foto, un PDF o una palabra; solo les pone un envoltorio apto para sistemas basados en texto.

La transformación es reversible y no pierde información, pero no cifra, no calcula un hash y no comprime.

De dónde viene Base64

Los primeros sistemas de red y correo no siempre transportaban bien bytes arbitrarios de 8 bits. Algunas pasarelas esperaban texto imprimible de 7 bits y podían modificar los datos binarios. Esquemas anteriores, como uuencode, resolvían el mismo problema; un antecedente directo del Base64 moderno es la codificación imprimible de 64 caracteres definida para Privacy-Enhanced Mail en RFC 1421.

MIME adoptó después el nombre Base64 como codificación de transferencia para cuerpos y adjuntos de correo. RFC 4648, publicado en 2006, es la referencia general para los alfabetos estándar y seguro para URL. Fue una evolución de estándares interoperables, no el truco aislado de una sola persona.

Por qué 64 caracteres y cómo funciona la regla 3 a 4

Seis bits representan exactamente 64 valores, del 0 al 63. Base64 estándar asigna esos valores a A–Z, a–z, 0–9, + y /. El codificador toma tres bytes: 3 × 8 son 24 bits. Luego cambia los límites, forma cuatro grupos de 6 bits, usa cada valor como índice del alfabeto y emite cuatro caracteres.

En “Man”, los tres bytes ASCII/UTF-8 producen los índices 19, 22, 5 y 46, que corresponden a T, W, F y u. El resultado es TWFu; decodificar consiste en recorrer el camino inverso.

“Man” ocupa un bloque completo de 24 bits, así que no necesita relleno.
Entrada
Man
Bytes de entrada
01001101 01100001 01101110
Grupos de 6 bits
010011 010110 000101 101110
Índices del alfabeto
19 · 22 · 5 · 46
Salida Base64
TWFu

Relleno, Unicode y Base64url

Un bloque final de un byte genera dos caracteres útiles y ==; dos bytes generan tres caracteres y =. El relleno no oculta información: indica cuánto del último bloque de 24 bits era dato real. Algunos protocolos lo omiten cuando la longitud se conoce por otro medio.

Base64 opera con bytes. Un texto con ñ, 中文 o emoji debe convertirse primero, normalmente a UTF-8. Para URL y nombres de archivo, base64url cambia + y / por - y _. Es un alfabeto relacionado, pero no debe mezclarse sin comprobar el protocolo.

Cuándo Base64 sí tiene sentido

Se usa en adjuntos MIME, bloques PEM de certificados o claves, y data: URL para incrustar imágenes o fuentes pequeñas. JSON y XML pueden transportar cargas binarias pequeñas como texto Base64. Las credenciales HTTP Basic usan Base64 y las partes de un JWT usan base64url; ninguna de las dos queda protegida por ello.

La pregunta correcta es si el canal exterior exige texto mientras la carga son bytes. Si una subida, un almacén de objetos o un BLOB ya acepta binario, Base64 puede no aportar nada.

El coste de tamaño y rendimiento

Cada tres bytes completos se convierten en cuatro caracteres. La longitud exacta es 4 × ceil(n / 3), por lo que el aumento se acerca al 33,3% en entradas grandes y puede ser mayor en las pequeñas. Los saltos de línea o el prefijo de una data URL suman algo más.

Otra capa puede comprimir la transferencia, pero la codificación sigue consumiendo memoria y CPU. Para archivos grandes suele ser más limpio enviar binario directamente.

Lo que Base64 no hace

Base64 no ofrece confidencialidad ni autenticidad: cualquiera puede decodificarlo sin clave y modificarlo. No sirve para proteger contraseñas, tokens de API o datos personales. Usa cifrado y TLS para secreto, hashes criptográficos para resúmenes y firmas o MAC para detectar alteraciones.

Regla breve: usa Base64 para cruzar una frontera de texto, no una frontera de seguridad.

Fuentes técnicas