Vai al contenuto

Codificatore e Decodificatore Base64 - Strumento Gratuito Online di Conversione Base64

Strumento gratuito di codifica e decodifica base64. Converti testo in Base64 o decodifica stringhe Base64 istantaneamente. Supporta la codifica standard e URL-safe. Nessun login richiesto.

Codificatore/Decodificatore Base64

Converti testo da e verso la codifica Base64

Calcolatore di caricamento...
📚

Documentazione

Che cos’è la codifica Base64?

Base64 è un modo per trasformare qualsiasi dato, compresi i dati binari come le immagini, in testo semplice costituito solo da lettere, cifre e alcuni simboli. Un codificatore Base64 converte i dati in questa forma testuale. Un decodificatore Base64 li riconverte nei dati originali. I programmi usano Base64 per trasferire in modo sicuro dati binari attraverso sistemi, come la posta elettronica o JSON, che prevedono testo semplice.

Base64 usa un alfabeto di 64 caratteri:

  • Lettere maiuscole A–Z (26 caratteri)
  • Lettere minuscole a–z (26 caratteri)
  • Cifre 0–9 (10 caratteri)
  • Due simboli, di solito + e / (2 caratteri)

Alcuni sistemi usano anche un segno di uguale (=) alla fine dell’output come riempimento. Il riempimento non fa parte dell’alfabeto di 64 caratteri; serve solo a completare la lunghezza.

Perché esiste Base64

Molti protocolli testuali più datati, tra cui la posta elettronica (SMTP) e alcune parti di HTTP, sono stati progettati per trasportare testo ASCII a 7 bit. Possono corrompere i byte binari grezzi, come quelli contenuti in un’immagine JPEG. Base64 evita questo problema rappresentando ogni byte usando solo caratteri sicuri e stampabili. Per questo motivo, gli allegati di posta elettronica, le immagini incorporate nelle pagine web e i campi binari all’interno di JSON passano comunemente prima attraverso Base64.

Base64 non è né compressione né crittografia. L’output codificato è sempre più grande dell’input e chiunque può decodificarlo senza password o chiave.

Come usare questo strumento

  1. Digita o incolla il testo nella casella di input.
  2. Scegli "Encode to Base64" per convertire il testo in Base64 oppure "Decode from Base64" per riconvertire una stringa Base64 in testo.
  3. Attiva la conversione in tempo reale per aggiornare automaticamente l’output durante la digitazione.
  4. Copia il risultato con il pulsante di copia.

Lo strumento legge e scrive testo Unicode standard, quindi codifica e decodifica correttamente lettere accentate, simboli ed emoji, non solo semplici lettere inglesi.

Come funziona la codifica Base64

Base64 trasforma ogni 3 byte dell’input (24 bit) in 4 caratteri dell’output (ciascuno contenente 6 bit), perché 24 diviso 6 è uguale a 4.

  1. Prende i byte dell’input e li scrive in forma binaria.
  2. Raggruppa i bit in blocchi di 24 bit (3 byte).
  3. Divide ogni blocco di 24 bit in quattro parti da 6 bit.
  4. Cerca ogni numero di 6 bit (da 0 a 63) nell’alfabeto Base64 e annota il carattere corrispondente.

Se la lunghezza dell’input non è un multiplo di 3, l’ultimo blocco è incompleto. Il codificatore lo completa con bit a zero, quindi aggiunge = caratteri all’output affinché il risultato sia comunque organizzato in gruppi di 4:

  • Un byte rimanente produce 2 caratteri Base64 più ==.
  • Due byte rimanenti producono 3 caratteri Base64 più un =.

Esempio di codifica Base64

Codifica della parola "Hello":

  1. Valori ASCII: 72, 101, 108, 108, 111
  2. Binario: 01001000 01100101 01101100 01101100 01101111
  3. I primi 3 byte (24 bit) vengono divisi in quattro gruppi da 6 bit: 010010 000110 010101 101100, che corrispondono ai numeri 18, 6, 21, 44 → caratteri S, G, V, s.
  4. I 2 byte rimanenti (16 bit) vengono divisi in tre gruppi da 6 bit, con l’aggiunta di 2 bit a zero alla fine: 011011 000110 111100, che corrispondono ai numeri 27, 6, 60 → caratteri b, G, 8.
  5. Poiché restavano 2 byte, alla fine viene aggiunto un =.
  6. Risultato: SGVsbG8=

La decodifica inverte questi passaggi: ogni carattere viene ricondotto al proprio numero di 6 bit, i bit vengono uniti in un flusso e il flusso viene nuovamente letto in byte da 8 bit.

Formula della lunghezza codificata in Base64

Per un input di n byte, la lunghezza codificata in caratteri è:

encoded_length = 4 × ⌈n / 3⌉

dove ⌈x⌉ significa arrotondare per eccesso al numero intero più vicino. Questa formula mostra perché l’output Base64 è sempre circa un terzo più grande dell’input: 4 caratteri di output ogni 3 byte di input rappresentano un aumento del 33%.

Dove viene usato Base64

  • Allegati di posta elettronica (MIME). La posta elettronica è stata progettata per il testo, quindi gli allegati vengono convertiti in Base64 prima dell’invio, rendendo il file allegato circa 33% più grande dell’originale.
  • URI di dati. Le immagini di piccole dimensioni possono essere incorporate direttamente in HTML o CSS come testo, ad esempio data:image/png;base64,iVBORw0KGgo..., evitando una richiesta separata per il file. Questa soluzione è più adatta ai file piccoli, poiché quelli grandi appesantiscono la pagina e non possono essere memorizzati nella cache separatamente.
  • API e JSON. JSON non dispone di un modo nativo per contenere dati binari grezzi, quindi i file binari inviati tramite un’API JSON vengono spesso prima codificati in Base64.
  • Autenticazione HTTP Basic. L’header Authorization codifica un nome utente e una password in Base64, ad esempio Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=. Questo non è sicuro di per sé; le credenziali possono essere lette da chiunque le intercetti, quindi l’autenticazione Basic deve essere usata solo su HTTPS.
  • JSON Web Token (JWT). Ognuna delle tre parti di un JWT viene codificata con Base64URL, una variante adatta all’inserimento in un URL.
  • Memorizzazione di dati binari come testo. I database o i file di configurazione che accettano solo testo a volte contengono dati binari sotto forma di stringa Base64.

Base64 a confronto con altre codifiche

Base64 sicuro per gli URL sostituisce i caratteri standard + e / con - e _, perché + e / hanno un significato speciale all’interno di un URL. Viene usato per i JWT, i parametri di query degli URL e i nomi dei file. Questo strumento produce un output Base64 standard; per convertirlo nel formato sicuro per gli URL basta sostituire quei due caratteri.

Base32 usa un alfabeto di 32 caratteri, quindi ogni carattere contiene 5 bit anziché 6. Converte ogni 5 byte in 8 caratteri, con un sovraccarico del 60% (8 ÷ 5 = 1,6), rispetto al 33% di Base64. Base32 viene scelto quando l’output deve essere digitato a mano o letto al telefono, perché evita le lettere maiuscole e minuscole e i caratteri facilmente confondibili.

Esadecimale usa 16 caratteri (0–9, A–F) e richiede 2 caratteri per byte, raddoppiando la dimensione (sovraccarico del 100%). È comune per visualizzare hash, colori e indirizzi MAC, nei casi in cui la leggibilità conta più delle dimensioni compatte.

Quando non usare Base64

Base64 aumenta le dimensioni e il consumo di CPU, quindi è poco adatto ai file grandi inviati attraverso una rete; l’invio diretto dei dati binari grezzi è più compatto e veloce. Non si deve mai fare affidamento su di esso per nascondere informazioni sensibili come password o chiavi API, poiché la decodifica non richiede alcun segreto. Per memorizzare file grandi, il tipo di colonna binaria di un database o un servizio di archiviazione dei file è generalmente preferibile a una lunga stringa Base64 in un campo testuale.

Errori comuni

  • Saltare la conversione UTF-8. La codifica di testo contenente lettere accentate o emoji senza prima convertirlo in byte UTF-8 può corrompere l’output.
  • Rimuovere il riempimento. Alcuni sistemi eliminano i caratteri = finali. La maggior parte dei decodificatori può comunque funzionare se la lunghezza della stringa viene riportata a un multiplo di 4 aggiungendo il riempimento, ma non tutti lo accettano, quindi è più sicuro conservarlo.
  • Interruzioni di riga residue. I codificatori MIME più datati inseriscono un’interruzione di riga ogni 76 caratteri; la maggior parte dei decodificatori moderni si aspetta una stringa continua, senza interruzioni.
  • Confondere le varianti. Base64 standard e Base64 sicuro per gli URL usano caratteri diversi nelle stesse due posizioni dell’alfabeto; la decodifica con la variante errata produce dati senza senso o un errore.

Domande frequenti

Base64 è una forma di crittografia? No. È una codifica testuale reversibile, non una crittografia. Chiunque può decodificare istantaneamente una stringa Base64 senza password. Se i dati devono rimanere segreti, usare un algoritmo di crittografia come AES.

Perché Base64 rende i dati più grandi? Perché usa un carattere intero per contenere solo 6 bit, mentre un byte grezzo contiene 8 bit. La conversione di 3 byte (24 bit) in 4 caratteri significa che l’output è 4/3, cioè circa 33%, più grande dell’input.

Base64 può codificare immagini e altri file binari? Sì. Qualsiasi file binario, comprese immagini, PDF e tracce audio, può essere codificato in Base64 e decodificato nuovamente byte per byte. È comunemente usato per le immagini di piccole dimensioni incorporate in HTML o CSS, ma è poco adatto ai file grandi.

Qual è la differenza tra Base64 e Base64URL? Base64URL sostituisce i caratteri standard + e / con - e _, rendendo il risultato adatto all’inserimento in un URL o in un nome di file senza ulteriori operazioni di escape. I JWT usano Base64URL per questo motivo.

Perché la mia stringa Base64 restituisce un errore "invalid" durante la decodifica? Le cause più comuni sono caratteri che non appartengono all’alfabeto Base64, come - e _ usati dalla variante sicura per gli URL, oppure una stringa la cui lunghezza è superiore di uno a un multiplo di 4. Nessuna stringa Base64 valida ha questa lunghezza. La decodifica fallisce anche quando i byte decodificati non sono testo UTF-8 valido. Questo strumento ignora spazi e interruzioni di riga all’interno della stringa e decodifica comunque una stringa a cui è stato rimosso il riempimento finale =.

Da dove proviene Base64? La tecnica risale ai primi metodi per inviare dati binari attraverso sistemi di posta che gestivano solo testo negli anni 1980, ed è stata standardizzata formalmente come parte di MIME nella RFC 2045 nel 1996. L’attuale specifica di riferimento per Base64, Base32 e Base16 è la RFC 4648.