Il principio della codifica Base64 consiste nell'utilizzare dei caratteri US-ASCII (caratteri non accentuati) per codificare tutti i tipi di caratteri ad 8 bit. In effetti, i protocolli di posta elettronica sono stati originariamente previsti per trasportare solamente dei messaggi di testo. Ora, data la diversità dei sistemi di posta elettronica, lo scambio di dati binari si traduce per nella maggior parte dei casi in trasformazioni di contenuto rendendo illeggibile il documento originale.
Il formato Base64, utilizzato massicciamente negli scambi di posta elettronica, permette quindi di trasmettere ogni documento binario (applicazione, video, file audio, ecc.) in allegato ad un messaggio elettronico codificandoli attraverso dei caratteri classici. La codifica Base64 provoca un aumento globale del 33% del volume dei dati da decodificare.
Il principio della codifica Base64 consiste nell'utilizzare 4 caratteri stampabili (in formato US-ASCII) per codificare un gruppo di 3 Byte qualsiasi (3*8 bit = 24 bit).
La codifica Base64 usa un alfabeto di 64 caratteri classici stampabili per rappresentare un dato di 6 bit. I 64 simboli di questo alfabeto sono scelti per essere universalmente leggibili e per non avere significato nei principali protocolli di messaggeria (in particolare SMTP):
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
123456789+/.
Percorrendo i dati binari da sinistra a destra, i gruppi di 24 bit sono creati concatenando dei blocchi di 3 dati di 8 bit. Ogni gruppo di 24 bit è quindi diviso in 4 gruppi di 6 bit, corrispondente a 4 caratteri dell'alfabeto Base64.
La codifica Base64 è prevista per dati che formano un multiplo di 24 bit. Quindi, se il volume di dati da codificare non forma un multiplo di 24 bit, il risultato della codifica Base64 deve essere completato da 0 a 3 caratteri «=» per ottenere un multiplo di 24 bit. Questo 65esimo carattere non può quindi essere presentato che alla fine dei dati decodificati. D'altra parte, per garantire una compatibilità con l'insieme dei sistemi di messaggeria, i dati Base64 sono formattati con dei ritorni a capo per ogni linea che non supera i 76 caratteri.
Foto: © Titov Nikolai - Shutterstock.com