Saltar al contenido principal
riqo.ioHerramientas para grandes ideas

Base64: codificación binaria en formato textual

Cómo Base64 representa bytes con un alfabeto ASCII reducido, por qué aumenta el tamaño y qué variante usar según el protocolo.

Por qué existe Base64

Muchos protocolos y formatos han gestionado históricamente mejor texto que bytes arbitrarios. Base64 representa datos binarios con un alfabeto ASCII limitado para atravesar canales textuales sin confundirse con controles o delimitadores.

No comprime ni oculta la información. Es una transformación reversible orientada a compatibilidad y transporte, no un mecanismo de seguridad.

Bloques de 24 bits y 64 símbolos

Base64 toma normalmente tres bytes, 24 bits, y los divide en cuatro grupos de 6 bits. Cada grupo selecciona uno de 64 símbolos, por lo que tres bytes de entrada producen cuatro caracteres de salida.

La proporción introduce aproximadamente un tercio de sobrecoste antes de padding, saltos de línea o envoltorios de protocolo. Para datos grandes suele ser mejor un transporte binario nativo.

Padding y grupos finales incompletos

Si quedan menos de tres bytes, Base64 estándar usa uno o dos caracteres = para conservar grupos de cuatro símbolos. El padding indica cuántos bytes significativos había en el último bloque.

Algunos protocolos lo omiten cuando la longitud puede inferirse. Emisor y receptor deben acordar la política, especialmente si la cadena codificada se firma o compara exactamente.

Base64 estándar y Base64url

El alfabeto estándar incluye + y /, incómodos en URL y nombres de fichero. Base64url los sustituye por - y _, reduciendo la necesidad de otro nivel de escaping.

Ambas variantes representan los mismos bits, pero sus cadenas no siempre son intercambiables. Conviene documentar alfabeto y política de padding en cada frontera entre sistemas.

Texto, UTF-8 y datos binarios

Para codificar una cadena primero se obtienen bytes mediante un encoding, normalmente UTF-8. El mismo texto abstracto puede producir Base64 distinto si se representa con otro juego de caracteres.

Imágenes, archivos y material criptográfico ya son binarios y no deben interpretarse como texto. Tras decodificar, los bytes deben tratarse según su formato original.

Lo que Base64 no garantiza

Cualquiera que tenga la cadena puede decodificarla. Base64 no aporta confidencialidad, autenticidad ni integridad; esas propiedades requieren criptografía adecuada.

Evita capas repetidas de codificación sin motivo. Define con claridad las representaciones de origen y destino y usa Base64 cuando un canal textual realmente necesite transportar bytes.