UltKit

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.

Modalità

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 _.

  1. 0A
  2. 1B
  3. 2C
  4. 3D
  5. 4E
  6. 5F
  7. 6G
  8. 7H
  9. 8I
  10. 9J
  11. 10K
  12. 11L
  13. 12M
  14. 13N
  15. 14O
  16. 15P
  17. 16Q
  18. 17R
  19. 18S
  20. 19T
  21. 20U
  22. 21V
  23. 22W
  24. 23X
  25. 24Y
  26. 25Z
  27. 26a
  28. 27b
  29. 28c
  30. 29d
  31. 30e
  32. 31f
  33. 32g
  34. 33h
  35. 34i
  36. 35j
  37. 36k
  38. 37l
  39. 38m
  40. 39n
  41. 40o
  42. 41p
  43. 42q
  44. 43r
  45. 44s
  46. 45t
  47. 46u
  48. 47v
  49. 48w
  50. 49x
  51. 50y
  52. 51z
  53. 520
  54. 531
  55. 542
  56. 553
  57. 564
  58. 575
  59. 586
  60. 597
  61. 608
  62. 619
  63. 62+ -
  64. 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.

InputByteStandardURL-safeLunghezza
U1VQ==VQ4
Ul2VWw=VWw4
Ult3VWx0VWx04
UltK4VWx0Sw==VWx0Sw8
UltKi5VWx0S2k=VWx0S2k8
UltKit6VWx0S2l0VWx0S2l08

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.