UltKit

Codare și decodare Base64

Transformați text sau un fișier în Base64 ori decodați Base64 înapoi în text lizibil. Caracterele Unicode sunt tratate corect, alfabetul URL-safe se activează dintr-un clic, iar decodarea acceptă oricare alfabet, cu sau fără padding.

Mod

0 caractere · 0 cuvinte · 0 rânduri

0 caractere · 0 cuvinte · 0 rânduri

Funcționează integral în această filă a browserului. Textul dvs. nu este încărcat și nici stocat.

Alfabetul Base64

Index → caracter conform RFC 4648. Ultimele două evidențiate diferă în varianta sigură pentru URL: 62 este + sau -, 63 este / sau _.

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

Cât de lung devine rezultatul

Fiecare 3 octeți de intrare devin 4 caractere; un grup final de 1 sau 2 octeți este completat cu = în Base64 standard și lăsat necompletat în forma sigură pentru URL.

IntrareOctețiStandardSigur pentru URLLungime
U1VQ==VQ4
Ul2VWw=VWw4
Ult3VWx0VWx04
UltK4VWx0Sw==VWx0Sw8
UltKi5VWx0S2k=VWx0S2k8
UltKit6VWx0S2l0VWx0S2l08

Ce face Base64

Base64, definit în RFC 4648, scrie octeți oarecare folosind 64 de caractere ASCII imprimabile: A–Z, a–z, 0–9, + și /. Fiecare grup de trei octeți (24 de biți) este împărțit în patru numere de 6 biți, iar fiecare număr alege un caracter din alfabet. Când lungimea datelor nu este multiplu de trei, ultimul grup se completează cu unul sau două semne =. Rezultatul este întotdeauna cu aproximativ 33% mai mare decât datele de intrare: 4 caractere pentru fiecare 3 octeți.

Există pentru că multe canale au fost construite pentru text. E-mailul (MIME), URL-urile data: din HTML și CSS, câmpurile JSON care conțin imagini sau certificate și antetele de autentificare HTTP Basic folosesc Base64 pentru a transporta în siguranță date binare. Nu este criptare și nu ascunde nimic; decodarea nu cere nicio cheie.

Unicode și varianta URL-safe

Base64 codifică octeți, nu litere, deci textul trebuie mai întâi transformat în octeți. Instrumentul folosește întotdeauna UTF-8, codificarea pe care funcționează web-ul: é devine doi octeți, iar un emoji patru. Funcția btoa din browser, folosită singură, generează o eroare la orice caracter peste U+00FF, motiv pentru care codificatoarele simple eșuează la diacritice și emoji; aici textul trece mai întâi prin TextEncoder, iar decodarea face invers cu TextDecoder. Dacă octeții decodați nu sunt UTF-8 valid (o imagine, o arhivă zip), instrumentul îi afișează în hexazecimal, nu ca text deformat.

Base64 standard folosește + și /, care au semnificații în URL-uri și în numele fișierelor. Alfabetul sigur pentru URL din secțiunea 5 a RFC 4648 le înlocuiește cu - și _, iar completarea cu = se omite de obicei. JSON Web Tokens folosesc exact această formă. Decodorul acceptă ambele alfabete și lipsa completării, deci puteți lipi oricare variantă.

Codarea fișierelor și a imaginilor

Alegeți un fișier, iar instrumentul îl citește local cu FileReader și returnează Base64 sau un URL data: complet, cu tipul MIME al fișierului, gata de lipit într-o etichetă img sau într-un fundal CSS. Imaginile inline economisesc o cerere HTTP, dar cresc cu o treime și nu pot fi puse separat în cache, deci se potrivesc pentru pictograme mici, nu pentru fotografii. Pentru imagini cu previzualizare și fragmente HTML și CSS gata făcute, folosiți Imagine în Base64.

Întrebări frecvente

De ce rezultatul Base64 este mai lung decât textul introdus?
Fiecare 3 octeți devin 4 caractere, deci rezultatul are aproximativ 4/3 din mărimea datelor de intrare, plus cel mult două caractere de completare. Textul non-ASCII iese și mai lung, deoarece UTF-8 folosește între doi și patru octeți pe caracter.
Ce sunt semnele = de la final?
Completare (padding). Fac ca lungimea rezultatului să fie multiplu de patru când lungimea datelor nu este multiplu de trei. Un = înseamnă că ultimul grup avea doi octeți, două = înseamnă că avea un octet.
De ce decodarea eșuează cu o eroare de caracter nevalid?
Datele conțin ceva în afara alfabetului, cum ar fi un spațiu în interiorul unui cuvânt, un ghilimele sau un % din codarea URL. Rândurile noi și lipsa completării sunt tolerate; alte caractere nu.
Este sigur să codați o parolă în Base64?
Base64 nu oferă nicio protecție. Autentificarea HTTP Basic trimite user:parolă în Base64, motiv pentru care trebuie folosită doar prin HTTPS. Pentru a proteja secrete, folosiți criptare sau hashing reale.
Care este diferența dintre Base64 și Base64url?
Doar două caractere și completarea: Base64url folosește - și _ în loc de + și / și de obicei omite =, astfel încât rezultatul poate sta în URL-uri și nume de fișiere fără escapare.