Skip to content

Glossary

Base64

Codifica binario-testo

By Published

Base64 è uno schema di codifica che rappresenta dati binari arbitrari usando 64 caratteri ASCII: le lettere maiuscole A–Z, le lettere minuscole a–z, le cifre 0–9 e i simboli + e /. Riempito con il carattere =fino a un multiplo di 4 byte. Definito nell’RFC 4648.

Tre byte di input si codificano in quattro caratteri Base64, quindi la forma codificata è circa il 33% più grande della sorgente. La codifica e la decodifica sono entrambe deterministiche ed esatte — non c’è perdita di qualità, solo un aumento delle dimensioni.

I casi d’uso principali:

  • Incorporare dati binari in protocolli solo-testo. Email (allegati MIME), JSON (dove i campi binari non sono nativamente ammessi), data URI in HTML/CSS.
  • JWT (JSON Web Token). I payload JWT sono codificati Base64 (specificamente base64url, vedi sotto) per stare in modo sicuro nelle intestazioni HTTP e negli URL.
  • Memorizzare dati binari in database o file di configurazione quando il tipo di colonna nativo sarebbe scomodo (es. le colonne BLOB di SQLite vanno bene ma richiedono gestione a livello di driver; una colonna TEXT contenente Base64 è più portabile).

Base64url è una variante definita nello stesso RFC che sostituisce + con - e / con _. Queste due sostituzioni rendono i dati codificati sicuri per gli URL — né -_ necessitano di percent-encoding in un URL. JWT e le moderne API web usano base64url ovunque.

Codifica o decodifica nel tuo browser con il nostro strumento Base64, che gestisce correttamente il testo UTF-8 (le primitive JavaScript btoa/ atob non lo fanno).

Esempio pratico

Codifica la stringa ASCII di tre byte “Man”. I byte sono 0x4D 0x61 0x6E, o in binario 01001101 01100001 01101110. Concatena i 24 bit e suddividili in quattro gruppi da 6 bit: 010011 010110 000101 101110 = 19, 22, 5, 46. L’alfabeto Base64 mappa quegli indici in T, W, F, u — producendo “TWFu”. Non è necessario alcun padding perché la lunghezza dell’input (3 byte) era già un multiplo di 3. Ora codifica “Ma” (2 byte): i bit sono 01001101 01100001, completati con due bit zero per ottenere 18 bit, suddivisi in tre gruppi da 6 bit 010011 010110 000100 = 19, 22, 4 = T, W, E. Aggiungi un = per segnalare il terzo carattere mancante del gruppo: “TWE=”. La decodifica inverte il processo e scarta il padding. L’aumento delle dimensioni del 33% è esattamente il rapporto 4/3 — ogni 3 byte di input diventano 4 byte di output.

Quando e perché è importante

Base64 è importante ogni volta che i dati binari devono viaggiare attraverso un canale che altera i byte non stampabili — email SMTP (progettata per testo a 7 bit), stringhe di query URL, valori JSON, sezioni CDATA XML, variabili d’ambiente, file di configurazione YAML e trasferimenti negli appunti tra sistemi con codifiche non corrispondenti. L’errore classico è usare Base64 dove non è necessario: un blob binario memorizzato in una colonna Postgres bytea non ha bisogno di codifica perché il protocollo gestisce nativamente il binario, ma lo stesso blob inserito tramite un letterale stringa SQL ne ha bisogno. Il secondo errore classico è l’opposto — incorporare un JPEG come data URI in CSS usando Base64 per evitare una richiesta HTTP, poi scoprire che il file gonfiato è più grande dei risparmi sulla rete con connessioni HTTP/2 multiplexate. Le moderne politiche di inlining delle immagini tracciano solitamente il limite intorno a 4–8 KB. Riferimento: RFC 4648 — Codifiche dati Base16, Base32 e Base64.

Il padding e i caratteri "=" alla fine: poiché Base64 impacchetta ogni 3 byte di input in 4 caratteri di output, gli input la cui lunghezza non è un multiplo di 3 producono 1 o 2 caratteri di padding alla fine. YQ==decodifica in un singolo byte ("a"); YWI=decodifica in due byte ("ab"); YWJjdecodifica in tre byte ("abc") senza padding. Molti parser Base64 accettano input senza padding anche se la stretta conformità RFC lo richiede — base64url nei contesti JWT omette deliberatamente il padding. Verificare sempre se la coppia encoder/decoder concorda sul padding, specialmente quando si collegano implementazioni strict e permissive.

Perché Base64 non è cifratura: Base64 è una mappatura deterministica che chiunque può invertire senza chiave. Incollare una stringa Base64 in un decodificatore online rivela immediatamente il testo in chiaro. È una codifica (un cambio di rappresentazione), non una cifratura (una trasformazione di riservatezza). Memorizzare password, chiavi API o PII come Base64 in qualsiasi file che potrebbe essere letto da un aggressore è funzionalmente equivalente a memorizzarli in testo semplice. Per la riservatezza, usare una crittografia appropriata (AES-GCM, ChaCha20-Poly1305) con una storia di gestione delle chiavi reale prima di qualsiasi wrapping Base64. Riferimento: RFC 4648 — Codifiche dati Base16, Base32 e Base64.

Prova il calcolatore

Codifica o decodifica qualsiasi stringa o file in Base64, inclusa la variante URL-safe.

Apri lo strumento Base64 →

Frequently asked questions

Cos’è Base64?
Base64 è uno schema di codifica che converte dati binari arbitrari in una stringa di 64 caratteri ASCII (A–Z, a–z, 0–9, +, /). Aumenta le dimensioni dei dati del 33% ma rende i dati binari sicuri da incorporare in contesti solo-testo come corpi email, JSON e intestazioni HTTP.
Come viene usato Base64 in pratica?
I token JWT sono tre segmenti codificati Base64url uniti da punti. L’incorporamento di un’immagine direttamente in un file CSS come data URL usa Base64. SMTP invia gli allegati come blocchi Base64 perché il protocollo storicamente gestiva solo ASCII a 7 bit.
Qual è la differenza tra Base64 e Base64url?
Base64url sostituisce il + standard con - e / con _ per rendere l’output sicuro negli URL e nei nomi di file senza percent-encoding. I token JWT e OAuth usano Base64url; gli allegati email usano Base64 standard.
Base64 cifra i dati?
No — Base64 è una codifica, non una cifratura. Qualsiasi decodificatore può recuperare istantaneamente i byte originali. Viene usato per rendere i dati binari sicuri per il testo, non per nasconderli o proteggerli.

Related

Published May 14, 2026