Se hai mai lavorato con API, email o immagini incorporate nel codice HTML, sicuramente ti sei imbattuto in lunghe stringhe di testo strano come SGVsbG8gV29ybGQh. Si tratta di Base64, uno dei formati di codifica più diffusi nel mondo informatico. In questa guida scoprirai cos'è, come funziona e in quali situazioni viene utilizzata, con esempi pratici.
Base64 è un sistema di codifica binario-testuale che converte dati binari in una sequenza di caratteri ASCII. Il nome deriva dal fatto che utilizza un alfabeto di 64 caratteri distinti per rappresentare i dati. Questi caratteri sono:
A–Z (26 caratteri)a–z (26 caratteri)0–9 (10 caratteri)+ e / (2 caratteri)= usato come paddingÈ importante chiarire subito un concetto fondamentale: Base64 non è una cifratura. Non offre alcuna protezione dei dati. È semplicemente un modo per rappresentare informazioni binarie in un formato testuale compatibile con tutti i sistemi.
Il processo di codifica Base64 avviene in tre passaggi principali:
Ogni carattere del testo originale viene convertito nel suo equivalente ASCII e poi in binario a 8 bit. Ad esempio, la lettera M corrisponde al valore ASCII 77, ovvero 01001101 in binario.
I bit vengono raggruppati in blocchi da 6 (anziché 8). Ogni gruppo da 6 bit può rappresentare un valore compreso tra 0 e 63, che corrisponde a uno dei 64 caratteri dell'alfabeto Base64.
Ogni valore numerico viene sostituito con il carattere corrispondente nella tabella Base64. Se il numero totale di bit non è divisibile per 6, vengono aggiunti degli zeri come padding e la stringa viene completata con il simbolo =.
Proviamo a codificare la parola "Ciao":
Testo originale: Ciao Valori ASCII: 67 105 97 111 Binario (8-bit): 01000011 01101001 01100001 01101111 Raggruppato 6: 010000 110110 100101 100001 011011 11(0000) Valori decimali: 16 54 37 33 27 48 Base64: Q 2 l h b w Risultato: Q2lhbw==
Base64 viene impiegata in numerosi contesti pratici nello sviluppo web e nella programmazione:
Il protocollo MIME, usato per le email, supporta solo testo ASCII. Allegati come immagini, PDF o file audio vengono codificati in Base64 per essere trasmessi correttamente come parte del messaggio.
È possibile incorporare immagini direttamente nel codice HTML o CSS usando Base64, evitando richieste HTTP aggiuntive:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...">
Quando si invia o riceve contenuto binario tramite API REST (ad esempio immagini o file), Base64 permette di includere i dati direttamente in un payload JSON, che accetta solo testo.
Nel meccanismo di autenticazione HTTP Basic, username e password vengono concatenati e codificati in Base64 prima di essere inseriti nell'header della richiesta:
Authorization: Basic dXNlcjpwYXNzd29yZA==
Come ogni tecnologia, Base64 ha pro e contro che è bene conoscere:
Ogni linguaggio di programmazione moderno offre funzioni native per lavorare con Base64:
// JavaScript
btoa("Ciao Mondo") // Codifica → "Q2lhbyBNb25kbw=="
atob("Q2lhbyBNb25kbw==") // Decodifica → "Ciao Mondo"
# Python
import base64
base64.b64encode(b"Ciao Mondo") # Codifica
base64.b64decode("Q2lhbyBNb25kbw==") # Decodifica
// PHP
base64_encode("Ciao Mondo"); // Codifica
base64_decode("Q2lhbyBNb25kbw=="); // Decodifica
No. Base64 non è una forma di crittografia ma solo una codifica. Chiunque può decodificare una stringa Base64 in pochi secondi. Per proteggere dati sensibili occorre usare algoritmi crittografici come AES o RSA.
Perché Base64 converte ogni 3 byte di dati in 4 caratteri ASCII. Questo comporta un aumento medio del 33-36% rispetto alla dimensione originale del dato.
La variante URL-safe sostituisce i caratteri + e / con - e _, rendendola compatibile con URL e nomi di file senza necessità di ulteriore encoding. È usata ad esempio nei token JWT.
Esistono diversi strumenti gratuiti disponibili online. Puoi usare utility web come quelle presenti su tool4u.org per codificare e decodificare stringhe Base64 direttamente dal browser, senza installare nulla.