Base64 è un modo per rappresentare dati binari arbitrari come testo composto solo da lettere, numeri e i caratteri +, / e =. Non comprime né cifra nulla: il risultato occupa circa un terzo in più, e chiunque conosca l'algoritmo può leggere il contenuto originale.
Come funziona la codifica
I byte in ingresso vengono raggruppati a tre a tre (24 bit) e divisi in quattro blocchi da sei bit. Ogni blocco corrisponde a un carattere dell'alfabeto Base64 (A–Z, a–z, 0–9, +, /). Se la lunghezza dei dati non è multipla di tre byte, alla fine viene aggiunto il carattere di riempimento =.
A cosa serve
Molti protocolli e formati — email (MIME), URL, JSON, XML — sono pensati per il testo e non gestiscono bene byte "grezzi": byte nulli, caratteri di controllo o sequenze che entrano in conflitto con la sintassi del formato. Base64 aggira il problema trasformando qualsiasi dato binario in testo sicuro.
Casi d'uso comuni
- Allegati email tramite MIME.
- Inviare immagini o piccoli file dentro una API JSON.
- Salvare dati binari in campi di testo di un database o file di configurazione.
- Codificare le parti header e payload di un JWT.
Cosa NON è Base64
Non è cifratura né hashing. Chiunque può decodificare una stringa Base64 e recuperare i dati originali senza chiave né password: è solo un formato di rappresentazione, non una misura di sicurezza.
Alfabeto standard e URL-safe
L'alfabeto classico di Base64 usa i caratteri + e /, che hanno un significato speciale negli URL e nei nomi di file. Per questi casi esiste la variante Base64URL, dove + è sostituito da - e / da _. Se si inserisce il risultato della codifica standard in un URL senza un ulteriore percent-encoding, i caratteri + e / possono alterare l'indirizzo o entrare in conflitto con i separatori di percorso.
Errore comune: riempimento troncato o «rovinato»
Il carattere = alla fine della stringa non è spazzatura, ma parte della codifica: indica quanti byte mancano nell'ultimo blocco. Se si copia una stringa Base64 in modo incompleto o si rimuovono manualmente i caratteri di riempimento, il decodificatore restituirà un errore o un risultato troncato. Alcuni sistemi (ad esempio JWT) omettono deliberatamente il =, e in tal caso la lunghezza va ripristinata prima della decodifica.