Cos'è Base64?
Base64 è uno schema di codifica che converte dati binari in testo ASCII usando 64 caratteri stampabili (A-Z, a-z, 0-9, +, /). È ampiamente usato per trasmettere dati binari attraverso mezzi che supportano solo testo, come email (MIME) e URLs.
Come funziona la codifica Base64?
La codifica Base64 funziona dividendo l'input in gruppi di 3 byte (24 bit) e convertendo ogni gruppo in 4 caratteri da 6 bit. Quando il numero di byte non è multiplo di 3, vengono aggiunti caratteri di padding (=) alla fine.
Esempio di conversione:
Testo originale: "ABC"
Binario: 01000001 01000010 01000011
Raggruppato (6 bit): 010000 010100 001001 000011
Decimale: 16 20 9 3
Base64: "QUJD"
A cosa serve Base64?
1. Incorporare Immagini in HTML/CSS: Le Data URLs permettono di includere immagini direttamente nel codice senza richieste HTTP aggiuntive.
<img src="data:image/png;base64,iVBORw0KGg..." />2. Trasmissione di Dati Binari in JSON: Le API REST usano frequentemente Base64 per inviare file o dati binari in payload JSON.
3. Autenticazione HTTP Basic: Le credenziali sono codificate in Base64 nell'header Authorization.
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=4. Email (MIME): Gli allegati nelle email sono codificati in Base64 per garantire compatibilità con server che supportano solo ASCII a 7 bit.
5. Archiviazione Temporanea: Archiviare dati binari in cookies, localStorage o sessionStorage.
Vantaggi e Svantaggi
✓ Vantaggi
- • Compatibile con sistemi che accettano solo testo ASCII
- • Facile da trasmettere via email, URL e JSON
- • Supportato nativamente in tutti i linguaggi
- • Sicuro per copiare/incollare senza perdere dati
✗ Svantaggi
- • Aumenta la dimensione del ~33% (overhead)
- • Non è crittografia (non offre sicurezza)
- • Costo CPU per encode/decode
- • Non è leggibile dall'uomo
Base64 vs Altri Schemi
| Schema | Caratteri | Overhead | Uso Comune |
|---|---|---|---|
| Base64 | A-Z, a-z, 0-9, +, / | ~33% | Email, JSON, Data URLs |
| Base64URL | A-Z, a-z, 0-9, -, _ | ~33% | URLs, JWT tokens |
| Esadecimale | 0-9, A-F | 100% | Hash, colori CSS |
| Base32 | A-Z, 2-7 | ~60% | TOTP, codici di backup |
Casi d'uso pratici
🖼️ Data URL per favicon
Incorpora un favicon inline senza richiesta HTTP esterna:
🔑 HTTP Basic Auth
Inviare credenziali in richieste HTTP:
const credentials = btoa('utente:password');
headers.Authorization = `Basic ${credentials}`;📧 Allegato email
I protocolli SMTP usano Base64 per gli allegati, garantendo che i caratteri speciali non corrompano il messaggio durante la trasmissione.
Base64 NON è crittografia
⚠️ Avviso Importante
Base64 è uno schema di codifica, non crittografia. Chiunque può decodificare Base64 istantaneamente. Non usare mai Base64 per proteggere password, token o dati sensibili. Per vera sicurezza, usa algoritmi di crittografia come AES, RSA o bcrypt.
FAQ - Domande Frequenti
1. Perché Base64 aumenta la dimensione del file?
Perché converte 3 byte (24 bit) in 4 caratteri da 6 bit ciascuno. Questo genera un overhead di circa 33%. Un file da 1 MB diventa ~1,33 MB in Base64.
2. Cosa significa il "=" alla fine delle stringhe Base64?
Il segno "=" è padding, aggiunto quando il numero di byte di input non è multiplo di 3. Possono esserci 0, 1 o 2 caratteri "=" alla fine.
3. Base64 può essere usato per URLs?
Base64 standard usa "+", "/" e "=" che sono caratteri speciali nelle URLs. Usa Base64URL (sostituisce + con -, / con _ e rimuove il padding) per URLs sicure.
4. Come convertire immagini in Base64?
In JavaScript: usa FileReader API. Riga di comando: base64 image.png. In Python: base64.b64encode().
5. Base64 supporta caratteri Unicode?
Sì! Il nostro strumento usa encodeURIComponent per supportare UTF-8, inclusi emoji e caratteri accentati.
6. Qual è la differenza tra btoa() e atob()?
btoa() = binary to ASCII (codifica). atob() = ASCII to binary (decodifica). Sono funzioni JavaScript native del browser.