Base64 es una representación de bytes utilizando un alfabeto de texto restringido. Es útil cuando un transporte acepta texto pero la carga útil es binaria. La operación es reversible: un decodificador correcto recupera los bytes originales, incluidos ceros y valores que no son caracteres válidos. Elegir cómo interpretar esos bytes es un paso aparte.
Tres bytes se convierten en cuatro caracteres.
Un byte contiene ocho bits. Tres bytes suministran 24 bits, que se dividen uniformemente en cuatro grupos de seis. Cada grupo selecciona uno de los 64 caracteres del alfabeto. El alfabeto estándar contiene letras mayúsculas, minúsculas, dígitos, más y barra. Para el texto ASCII Man, los bytes son 4d 61 6e en hexadecimal y la salida codificada es TWFu.
Input bytes: 01001101 01100001 01101110
Six-bit sets: 010011 010110 000101 101110
Indexes: 19 22 5 46
Output: T W F u
El relleno describe el grupo final.
Cuando queda un byte, la salida tiene dos caracteres alfabéticos y dos signos iguales. Los dos bytes restantes producen tres caracteres alfabéticos y un signo igual. Así M se convierte TQ==, mientras Ma se convierte TWE=. El relleno forma parte de la estructura; añadir signos igual al azar no permite recuperar un carácter de datos perdido. Para que la codificación sea canónica, los bits no utilizados del último carácter del alfabeto también deben ser cero.
Para n bytes de entrada, la salida con relleno contiene 4 × ceil(n / 3) caracteres. Por tanto, un archivo de 1.024 bytes genera 1.368 caracteres antes de añadir un prefijo Data URI o saltos de línea. Base64 no comprime los datos, aunque una capa de compresión de transporte independiente puede reducir el tamaño final de la transferencia.
Validar antes de interpretar
Utilice el modo estricto al probar un productor con un protocolo definido. Utilice el modo de compatibilidad cuando una fuente conocida haya insertado ASCII saltos de línea, omitido relleno o incluido un contenedor de datos URI. Revisar los ajustes registrados. La puntuación inesperada, los alfabetos mezclados y los bits no utilizados distintos de cero merecen una investigación, no una eliminación silenciosa.
Finalmente, inspeccione los bytes decodificados. Un Base64 válido puede contener una secuencia UTF-8 no válida, una imagen truncada o un PDF incompleto. Una decodificación exitosa solo prueba la capa de codificación. Guarde los resultados binarios como bytes y utilice el analizador de archivos adecuado para comprobar su estructura. El alfabeto, el relleno y las reglas de bits canónicos se especifican en RFC 4648.