Base64 è un metodo per convertire dati binari arbitrari, dati composti da più di semplici caratteri di testo, in un messaggio di testo normale che può quindi essere trasferito attraverso una rete di computer. È quella che si chiama codifica. Sebbene l’output di un messaggio codificato in base64 non sia qualcosa che un essere umano possa facilmente capire, è comunque composto da 64 caratteri comuni della lingua inglese, da cui deriva il nome, con un 65esimo carattere aggiuntivo utilizzato per scopi speciali.
L’idea alla base di base64 è nata quando è sorta la necessità di ottenere più di semplici caratteri di testo attraverso comunicazioni di rete come la posta elettronica. I primi messaggi di posta elettronica sono iniziati come caratteri codificati nell’American Standard Code for Information Interchange (ASCII), il metodo di codifica utilizzato nei computer per rappresentare i caratteri dell’alfabeto della lingua inglese come testo su display o stampanti. Poiché le informazioni binarie aggiuntive necessarie per passare, sono stati sviluppati nuovi schemi di codifica.
Il metodo di codifica base64 è stato descritto per la prima volta in quello che è noto come standard MIME (Multipurpose Internet Mail Extensions). I metodi definiti dallo standard MIME mediante i quali altri caratteri non codificati in ASCII, come alfabeti utilizzati da lingue diverse dall’inglese, nonché altri dati binari arbitrari, possono essere codificati in sequenze ASCII e trasmessi tramite messaggi di posta elettronica. Dei due principali mezzi di codifica descritti dallo standard MIME, base64 condivide il ruolo con un altro noto come quoted-printable. Mentre il metodo stampabile tra virgolette è in grado di estendere ASCII un po’ oltre i suoi 94 caratteri stampabili limitati, base64 può prendere qualsiasi sequenza di byte e convertirla in una sequenza ASCII.
Base64 deve prendere stringhe di dati che altrimenti non soddisferebbero lo standard ASCII e convertirle in ASCII. Per fare ciò, il metodo di codifica consiste nel raccogliere i dati in gruppi di tre byte e convertirli in quattro numeri che rappresentano i caratteri ASCII corrispondenti. Poiché un byte è di otto bit, dove ogni bit è rappresentato da uno o da zero, tre byte sono collegati da un capo all’altro e l’intera sequenza va in un buffer a 24 bit. I 24 uno e gli zeri vengono quindi suddivisi in quattro gruppi di sei bit, a ciascuno dei quali vengono quindi assegnati numeri che corrispondono a un carattere ASCII.
Poiché base64 è in grado di codificare qualsiasi dato binario, qualsiasi sequenza di byte può passare attraverso il processo. C’è un problema, tuttavia, in quei casi in cui il numero di byte per la codifica non è divisibile per tre in modo che i bit possano entrare nel buffer. Se una sequenza di byte contiene, diciamo, quattro o cinque byte, è ancora necessario qualcosa per riempire il buffer e completare i 24 bit completi. In questi casi, ogni byte mancante è rappresentato da otto 0 e viene successivamente convertito in caratteri di riempimento nella codifica finita. Da qui deriva il già citato 65° carattere, rappresentato nel messaggio codificato con un segno di uguale (=); appare solo alla fine di una codifica se è necessario un riempitivo.
Sebbene base64 sia stato originariamente concepito per la trasmissione di dati binari tramite messaggi di posta elettronica, il suo utilizzo è entrato in gioco in una serie di altre aree oltre a MIME. Uno di questi usi abbastanza comuni è che i database e le applicazioni web codifichino i dati per la creazione di un URL (Uniform Resource Locator) su un modulo web. L’extensible markup language (XML) utilizza anche una variante che consente di includere dati binari, come piccole immagini, all’interno di documenti XML. Esistono altre varianti per i metodi di crittografia e altre tecniche relative alla sicurezza come nascondere le password.