Cos'è la codifica Base64 e quando usarla
Se lavori con API, sistemi di e-mail o sviluppo web, hai incontrato Base64, anche senza riconoscerlo. Quelle lunghe stringhe di lettere e cifre che assomigliano a caratteri senza senso? È probabilmente Base64.
Cosa fa Base64
Base64 converte dati binari (qualsiasi sequenza di byte) in una stringa di testo che usa solo 64 caratteri «sicuri»: A-Z, a-z, 0-9, + e /. Il risultato finisce sempre con un padding = se necessario.
Esempio:
- Testo:
Hello World - Base64:
SGVsbG8gV29ybGQ=
Questa codifica esiste perché molti sistemi (e-mail, JSON, URL, XML) gestiscono solo testo. I dati binari, immagini, file compressi, byte grezzi, possono contenere caratteri che rompono questi sistemi. Base64 converte il binario in testo che attraversa qualsiasi canale testuale senza essere corrotto.
Usi comuni
Integrare immagini in HTML/CSS:
<img src="data:image/png;base64,iVBORw0KGgoAAAA..." />
Piccole icone e loghi possono essere integrati direttamente nel tuo HTML, eliminando una richiesta HTTP aggiuntiva.
Payload di API: quando un'API si aspetta JSON ma bisogna includere binario (un caricamento di file, un'immagine di firma), codificarlo in Base64 permette di includerlo come un campo testo ordinario.
Allegati e-mail: i protocolli di messaggistica (SMTP) sono testuali. Ogni allegato è codificato in Base64 dietro le quinte per viaggiare come testo.
Intestazioni di autenticazione: l'autenticazione HTTP Basic codifica utente:password in Base64 nell'intestazione Authorization. (È codifica, non cifratura, non apporta alcuna sicurezza di per sé.)
Come codificare e decodificare
- Scegli codifica o decodifica, seleziona il senso di conversione.
- Incolla testo o carica un file, inserisci testo direttamente o trascina e rilascia un file (fino a 5 MB).
- Copia il risultato, l'output si aggiorna istantaneamente. Copialo negli appunti.
Quando usare Base64
Da usare quando:
- Devi integrare una piccola immagine (meno di 5 KB) direttamente in HTML o CSS
- Un'API richiede dati binari come stringa di testo
- Devi far transitare binario attraverso un sistema che supporta solo testo
Da non usare quando:
- Il file è grande, Base64 aggiunge il 33 % di sovraccarico e impedisce la cache
- Hai bisogno di sicurezza, Base64 non è cifratura
- Puoi servire il file normalmente, un classico
<img src="photo.jpg">è più efficiente di una Data URL Base64 per tutto ciò che supera alcuni KB
Consigli
- Solo file piccoli, l'aumento del 33 % conta. Un'immagine da 100 KB diventa 133 KB in Base64, e non può essere messa in cache separatamente dal browser.
- Non confondere codifica e cifratura, Base64 è totalmente reversibile da chiunque. Non apporta alcuna sicurezza. Usalo per trasportare dati, non per proteggerli.
- Attenzione ai ritorni a capo, alcune implementazioni Base64 aggiungono un ritorno a capo ogni 76 caratteri (secondo lo standard MIME). Se incolli Base64 in JSON o un URL, assicurati che stia su una sola riga.
Domande frequenti
Base64 cifra i miei dati?
No. Base64 è una codifica, non una cifratura. Chiunque può decodificare una stringa Base64, non apporta alcuna sicurezza. Se vuoi proteggere dati, usa una vera cifratura (AES, RSA, ecc.).
Perché Base64 rende i file più pesanti?
La codifica Base64 aumenta la dimensione dei dati di circa il 33 %. Tre byte binari diventano quattro caratteri Base64. Questo sovraccarico è il prezzo da pagare per poter trasmettere binario in sicurezza sotto forma di testo.
Posso codificare file, non solo testo?
Sì. Qualsiasi file (immagini, PDF, audio) può essere codificato in Base64. È comunemente usato per integrare piccole immagini direttamente in HTML o CSS sotto forma di Data URL.
Quando NON usare Base64?
Non usarlo per file grandi. Un'immagine da 1 MB diventa 1,33 MB in testo Base64, e il browser non può metterla in cache separatamente. Per tutto ciò che supera alcuni KB, servire il file normalmente è più efficiente.
What is the difference between standard Base64 and URL-safe Base64?
Standard Base64 (RFC 4648 section 4) uses the characters A-Z, a-z, 0-9, +, / with = padding. URL-safe Base64 (RFC 4648 section 5) swaps + for - and / for _ so the string is safe to drop into a URL or a filename without percent-encoding. JWT tokens use the URL-safe variant.
Why does Base64 sometimes have one or two = signs at the end?
The = is padding. Base64 encodes input in 3-byte groups; if the input length is not a multiple of 3, the last group is padded with zero bits and one or two = characters mark the missing bytes. One = means one missing byte, two = means two missing bytes.