Anonymous View

Base64 Decodificatore

/

I tuoi dati sono 100% privati -- Base64 viene codificato e decodificato interamente sul tuo dispositivo.

Testo in chiaro
Base64

Cos'è Base64?#

Base64 è un modo per rappresentare dati binari come testo semplice usando 64 caratteri ASCII: A–Z, a–z, 0–9, più + e /. Permette a dati binari come immagini, chiavi e allegati email di transitare in sicurezza attraverso sistemi progettati per il testo. È codifica, non cifratura.

Base64 usa un alfabeto fisso di 64 caratteri. Ogni valore da 0 a 63 corrisponde esattamente a uno di essi, ed è così che qualsiasi 3 byte di dati binari diventano 4 caratteri leggibili:

ValoriCaratteri
0–25A–Z26 lettere maiuscole
26–51a–z26 lettere minuscole
52–610–910 cifre
62–63+ /2 simboli

Il segno "=" è l'unica eccezione. È un carattere di riempimento (padding), non uno dei 64 valori, e serve solo a completare l'ultimo blocco.

Quasi certamente lo hai già visto. Base64 compare ovunque i dati binari debbano viaggiare all'interno di testo:

  • Incorporare una piccola immagine o icona direttamente in HTML o CSS
  • Restituire blob binari all'interno di una risposta JSON API
  • Codificare allegati email (MIME)
  • Memorizzare chiavi e certificati in file PEM

Il trucco del data-URI si presenta così. La stringa lunga è l'intera immagine:

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot" />

Perché esiste Base64?#

I primi protocolli di rete erano progettati per il testo, non per byte grezzi. ASCII usava 7 bit e 128 caratteri, sufficiente per l'inglese ma non per i dati binari. Alcuni sistemi alteravano i caratteri di controllo o riscrivevano i terminatori di riga (LF in CR + LF), corrompendo silenziosamente immagini e audio in transito.

Base64 aggira tutto ciò emettendo solo caratteri su cui tutti i sistemi concordano già. Base16 e Base32 svolgono lo stesso compito con alfabeti più piccoli, ma Base64 comprime più dati per carattere restando sicuro. Ecco perché ha vinto.

Come funziona la codifica Base64#

L'intero schema è un'unica idea ripetuta: prendi 3 byte (24 bit), ri-suddividili in quattro gruppi da 6 bit ciascuno, e cerca ogni gruppo nell'alfabeto. Ecco la parola "Logto", codificata a mano.

  1. Scrivi ogni carattere nel suo binario a 8 bit, usando il codice ASCII.
  2. Prendi 3 byte alla volta. Sono 24 bit.
  3. Ri-suddividi gli stessi 24 bit in quattro gruppi da 6 bit.
  4. Leggi ogni gruppo da 6 bit come un numero da 0 a 63.
  5. Cerca quel numero nell'alfabeto per ottenere un carattere.
  6. Se l'ultimo blocco di byte non raggiunge 3, aggiungi zeri ai bit rimanenti e inserisci "=" in modo che ogni blocco rimanga di 4 caratteri.

Passo 1. Converti ogni carattere nel suo binario a 8 bit:

CarattereCodice ASCIIBinario
L7601001100
o11101101111
g10301100111
t11601110100
o11101101111

Passo 2. Prendi i primi tre byte, "Log", e ri-suddividi quegli stessi 24 bit in quattro gruppi da 6 bit:

byte da 8 bit
01001100 01101111 01100111
gruppi da 6 bit
010011 000110 111101 100111

Passo 3. Leggi ogni gruppo da 6 bit come numero, poi cerca il numero nell'alfabeto:

Gruppo da 6 bitValoreCarattere Base64
01001119T
0001106G
111101619
10011139n

"Logto" è 5 byte, non un multiplo di 3. Gli ultimi due byte, "to", lasciano una suddivisione 6 + 6 + 4. Aggiungi zeri a quegli ultimi 4 bit per completare un gruppo da 6 bit, poi aggiungi un "=" per completare il blocco di 4 caratteri:

Unisci i blocchi:

"Logto"  →  TG9ndG8=

Ogni linguaggio include questa funzionalità. In Node.js:

const text = 'Logto';
const base64 = Buffer.from(text).toString('base64');
console.log(base64); // TG9ndG8=

Da quel processo emergono tre regole da tenere a mente:

  • 3 in entrata, 4 in uscita: La lunghezza dell'output è l'input arrotondato al multiplo di 4 caratteri, quindi i dati codificati sono sempre circa il 33% più grandi.
  • "=" significa padding: Appare solo quando l'input non è un multiplo di 3 byte.
  • Il padding conta i byte rimanenti: Nessun "=" significa multiplo di 3 byte, un "=" significa 2 byte rimanenti, due "=" significa 1 byte rimanente.

Quando dovresti usare Base64?#

Ricorri a Base64 quando i dati binari devono passare attraverso un canale solo testo:

  • Asset inline: Incorpora una piccola immagine o font in HTML/CSS per risparmiare una richiesta.
  • Trasporti solo testo: Inserisci dati binari in JSON, XML, o un parametro di query URL.
  • Caratteri limitati: Sposta dati attraverso sistemi che hanno problemi con i byte di controllo.

Cosa ottieni in cambio:

  • Funziona ovunque: Qualsiasi sistema compatibile ASCII può leggerlo, senza negoziazione del charset.
  • Nulla si corrompe: L'output sopravvive a canali che altrimenti danneggerebbero i byte grezzi.

Base64 sicuro per URL (Base64URL)#

Il Base64 standard si affida a tre caratteri che confliggono con il funzionamento di URL, stringhe di query e nomi di file: +, / e il padding =. Inserisci una stringa Base64 normale in un link e può rompersi in modo silenzioso:

  • + diventa uno spazio. In una stringa di query, molti server interpretano + come spazio. Quindi ?data=ab+cd arriva silenziosamente come "ab cd", e i byte sono errati.
  • / è un separatore di percorso. Un / all'interno di un valore può essere interpretato come un nuovo segmento del percorso, e la maggior parte dei filesystem lo rifiuta in un nome di file.
  • = è anch'esso riservato. Separa chiavi da valori in una stringa di query, quindi il padding = finale viene rimosso o interpretato erroneamente.

Puoi codificarli con percent-encoding (+ diventa %2B, / diventa %2F, = diventa %3D), ma questo gonfia la stringa ed è facile fare doppia codifica per errore.

Base64URL (RFC 4648 §5) risolve il problema alla fonte: sostituisce + con -, / con _, e omette il padding =. Il risultato può essere inserito direttamente in un URL, parametro di query o nome di file senza nulla da codificare. Lo troverai in URL, nomi di file e molte web API.

const base64 = 'TG9ndG8=';
const urlSafe = base64.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
console.log(urlSafe); // TG9ndG8

Limitazioni (e un grande malinteso)#

Base64 è una rappresentazione, non un pasto gratis. Tieni a mente tre cose:

  • È circa il 33% più grande: 3 byte diventano 4 caratteri, quindi i dati codificati si gonfiano di circa un terzo.
  • Costa cicli CPU: Codifica e decodifica non sono gratuite ad alto volume o su payload grandi.
  • È illeggibile: Le stringhe opache rendono i log e il debugging più difficili.
Base64 non è cifratura. Questo è l'errore più comune. Base64 non nasconde nulla. Chiunque può decodificarlo in una riga. Se i dati sono sensibili, cifrali. Base64 cambia solo la forma, mai chi può leggerli.

Domande frequenti#

Base64 è cifratura o è sicuro?

No. È codifica reversibile con un alfabeto pubblico, quindi chiunque può decodificarlo istantaneamente e non aggiunge alcuna riservatezza. Cifra i dati sensibili invece.

Perché la mia stringa Base64 è circa il 33% più grande?

Base64 converte ogni 3 byte in 4 caratteri, quindi la forma codificata è sempre circa un terzo più grande dei byte originali.

Cosa significano i segni "=" alla fine?

Sono padding che mantiene l'output come multiplo di 4 caratteri. Un "=" significa che l'input aveva 2 byte rimanenti; due "=" significa che ne aveva 1; nessun "=" significa che la lunghezza era già un multiplo di 3 byte.

Qual è la differenza tra Base64 e Base64URL?

Base64URL è la stessa codifica con un alfabeto sicuro per URL e nomi di file: - e _ sostituiscono + e /, e il padding = viene di solito omesso. È comune in URL, nomi di file e molte web API.

Base64 può codificare qualsiasi file, o solo testo?

Qualsiasi dato binario: immagini, PDF, chiavi, eseguibili. Base64 lavora sui byte grezzi, quindi il tipo di contenuto originale non importa.

Questo strumento invia i miei dati da qualche parte?

No. Codifica e decodifica vengono eseguite interamente nel tuo browser. Nulla di ciò che incolli viene caricato o registrato.

Sblocca di più con Logto Cloud