¿Qué es Base64?

Base64 es un método para convertir datos binarios arbitrarios, datos compuestos por más de caracteres de texto sin formato, en un mensaje de texto sin formato que luego se puede transferir a través de una red informática. Es lo que se llama codificación. Si bien la salida de un mensaje codificado en base64 no es algo que un ser humano pueda entender fácilmente, aún se compone de 64 caracteres comunes en inglés, que es de donde proviene el nombre, con un carácter 65 adicional que se usa para propósitos especiales.

La idea detrás de base64 surgió cuando surgió la necesidad de obtener más que simples caracteres de texto a través de comunicaciones en red como el correo electrónico. Los primeros mensajes de correo electrónico comenzaron como caracteres codificados en el Código estándar estadounidense para el intercambio de información (ASCII), el método de codificación utilizado en las computadoras para representar los caracteres del alfabeto del idioma inglés como texto en pantallas o impresoras. A medida que se necesitaba información binaria adicional para pasar, se desarrollaron nuevos esquemas de codificación.

El método de codificación base64 se describió por primera vez en lo que se conoce como el estándar Extensiones multipropósito de correo de Internet (MIME). El estándar MIME definía métodos mediante los cuales otros caracteres que no estaban codificados en ASCII, como los alfabetos utilizados en idiomas distintos del inglés, así como otros datos binarios arbitrarios, también podían codificarse en secuencias ASCII y transmitirse a través de mensajes de correo electrónico. De los dos medios principales de codificación descritos por el estándar MIME, base64 comparte el rol con otro conocido como imprimible entre comillas. Si bien el método imprimible entre comillas es capaz de extender ASCII algo más allá de sus 94 caracteres imprimibles limitados, base64 puede tomar cualquier secuencia de bytes y convertirla en una secuencia ASCII.

Base64 necesita tomar cadenas de datos que de otro modo no cumplirían con el estándar ASCII y convertirlas en ASCII. Para hacer esto, el método de codificación es un proceso de recopilar los datos en grupos de tres bytes y convertirlos en cuatro números que representan los caracteres ASCII correspondientes. Dado que un byte tiene ocho bits, donde cada bit está representado por un uno o un cero, tres bytes están vinculados de un extremo a otro y la secuencia completa entra en un búfer de 24 bits. Los 24 unos y los ceros se dividen en cuatro grupos de seis bits, donde a cada uno se le asignan números que coinciden con un carácter ASCII.

Dado que base64 es capaz de codificar cualquier dato binario, cualquier secuencia de bytes puede pasar por el proceso. Sin embargo, hay un problema en aquellos casos en los que el número de bytes para la codificación no es divisible por tres para que los bits puedan caber en el búfer. Si una secuencia de bytes contiene, digamos, cuatro o cinco bytes, todavía se necesita algo para llenar el búfer y formar los 24 bits completos. En estos casos, cada byte que falta está representado por ocho ceros y posteriormente se convierte en caracteres de relleno en la codificación finalizada. De aquí proviene el carácter 0 mencionado anteriormente, representado en el mensaje codificado con un signo igual (=); solo aparece al final de una codificación en caso de que sea necesario un relleno.

Aunque base64 se diseñó originalmente para transmitir datos binarios a través de mensajes de correo electrónico, su uso ha entrado en juego en otras áreas además de MIME. Uno de esos usos bastante comunes es que las aplicaciones y bases de datos web codifiquen datos para la creación de un localizador uniforme de recursos (URL) en un formulario web. El lenguaje de marcado extensible (XML) también utiliza una variante que permite incluir datos binarios, como imágenes pequeñas, dentro de los documentos XML. Existen otras variaciones para los métodos de cifrado y otras técnicas relacionadas con la seguridad, como ocultar contraseñas.