Codifica e decodifica Base64
Converte testo o un file in Base64, oppure decodifica il Base64 in testo leggibile. L'Unicode viene gestito correttamente, l'alfabeto URL-safe è a un clic di distanza e la decodifica accetta entrambi gli alfabeti, con o senza padding.
0 caratteri · 0 parole · 0 righe
0 caratteri · 0 parole · 0 righe
Funziona interamente in questa scheda del browser. Il testo non viene mai caricato né salvato.
L'alfabeto Base64
Indice → carattere secondo la RFC 4648. Gli ultimi due, evidenziati, cambiano nella variante URL-safe: 62 è + o -, 63 è / o _.
- 0A
- 1B
- 2C
- 3D
- 4E
- 5F
- 6G
- 7H
- 8I
- 9J
- 10K
- 11L
- 12M
- 13N
- 14O
- 15P
- 16Q
- 17R
- 18S
- 19T
- 20U
- 21V
- 22W
- 23X
- 24Y
- 25Z
- 26a
- 27b
- 28c
- 29d
- 30e
- 31f
- 32g
- 33h
- 34i
- 35j
- 36k
- 37l
- 38m
- 39n
- 40o
- 41p
- 42q
- 43r
- 44s
- 45t
- 46u
- 47v
- 48w
- 49x
- 50y
- 51z
- 520
- 531
- 542
- 553
- 564
- 575
- 586
- 597
- 608
- 619
- 62+ -
- 63/ _
Quanto diventa lungo l'output
Ogni 3 byte di input diventano 4 caratteri; un gruppo finale di 1 o 2 byte viene completato con = nel Base64 standard e lasciato senza padding nella forma URL-safe.
| Input | Byte | Standard | URL-safe | Lunghezza |
|---|---|---|---|---|
U | 1 | VQ== | VQ | 4 |
Ul | 2 | VWw= | VWw | 4 |
Ult | 3 | VWx0 | VWx0 | 4 |
UltK | 4 | VWx0Sw== | VWx0Sw | 8 |
UltKi | 5 | VWx0S2k= | VWx0S2k | 8 |
UltKit | 6 | VWx0S2l0 | VWx0S2l0 | 8 |
A cosa serve il Base64
Base64, definito nella RFC 4648, scrive byte arbitrari usando 64 caratteri ASCII stampabili: A–Z, a–z, 0–9, + e /. Ogni gruppo di tre byte (24 bit) viene suddiviso in quattro numeri da 6 bit, e ciascun numero sceglie un carattere dell'alfabeto. Quando la lunghezza dell'input non è un multiplo di tre, l'ultimo gruppo viene completato con uno o due segni =. Il risultato è sempre circa il 33% più grande dell'input: 4 caratteri ogni 3 byte.
Esiste perché molti canali sono nati per il testo. Email (MIME), URL data: in HTML e CSS, campi JSON che contengono immagini o certificati e intestazioni di autenticazione HTTP Basic usano tutti Base64 per trasportare dati binari in modo sicuro. Non è crittografia e non nasconde nulla: per decodificare non serve alcuna chiave.
Unicode e la variante URL-safe
Base64 codifica byte, non lettere, quindi il testo va prima trasformato in byte. Questo strumento usa sempre UTF-8, la codifica su cui si basa il web: é diventa due byte e una emoji quattro. La funzione btoa integrata nel browser, da sola, genera un errore con qualsiasi carattere oltre U+00FF, ed è per questo che i codificatori ingenui falliscono con accenti ed emoji; qui il testo passa prima da TextEncoder e la decodifica compie il percorso inverso con TextDecoder. Se i byte decodificati non sono UTF-8 valido (un'immagine, un file zip), lo strumento li mostra in esadecimale invece di testo illeggibile.
Il Base64 standard usa + e /, che hanno un significato negli URL e nei nomi di file. L'alfabeto URL-safe della sezione 5 della RFC 4648 li sostituisce con - e _, e di solito il padding viene omesso. I JSON Web Token usano esattamente questa forma. Il decodificatore accetta entrambi gli alfabeti e il padding mancante, quindi è possibile incollare l'una o l'altra forma.
Codificare file e immagini
Scegliendo un file, lo strumento lo legge in locale con FileReader e restituisce il Base64 oppure un URL data: completo, con il tipo MIME del file, pronto da incollare in un tag img o in uno sfondo CSS. Le immagini inline risparmiano una richiesta HTTP, ma crescono di un terzo e non possono essere messe in cache separatamente, quindi vanno bene per piccole icone più che per le foto. Per le immagini con anteprima e snippet HTML e CSS già pronti, usare Da immagine a Base64.
Domande frequenti
- Perché l'output Base64 è più lungo del testo di partenza?
- Ogni 3 byte diventano 4 caratteri, quindi l'output è grande circa 4/3 dell'input, più al massimo due caratteri di padding. Il testo non ASCII è ancora più lungo, perché UTF-8 usa da due a quattro byte per carattere.
- Cosa sono i segni = alla fine?
- Il padding. Rendono la lunghezza dell'output un multiplo di quattro quando la lunghezza dell'input non è un multiplo di tre. Un = indica che l'ultimo gruppo aveva due byte, due = indicano che ne aveva uno.
- Perché la decodifica dà un errore di carattere non valido?
- L'input contiene qualcosa che non appartiene all'alfabeto, come uno spazio dentro una parola, un apice o un % della codifica URL. Le interruzioni di riga e il padding mancante sono tollerati; gli altri caratteri no.
- È sicuro codificare una password in Base64?
- Base64 non offre alcuna protezione. L'autenticazione HTTP Basic invia utente:password in Base64, ed è per questo che va usata solo su HTTPS. Per proteggere dati riservati servono vera crittografia o hashing.
- Che differenza c'è tra Base64 e Base64url?
- Solo due caratteri e il padding: Base64url usa - e _ al posto di + e / e di solito omette =, così il risultato può stare in URL e nomi di file senza escape.