UltKit

Base64 coderen en decoderen

Zet tekst of een bestand om naar Base64, of decodeer Base64 terug naar leesbare tekst. Unicode wordt correct verwerkt, het URL-veilige alfabet kiest u met één klik en bij het decoderen wordt elk van beide alfabetten geaccepteerd, met of zonder opvulling.

Modus

0 tekens · 0 woorden · 0 regels

0 tekens · 0 woorden · 0 regels

Werkt volledig in dit browsertabblad. Uw tekst wordt nooit geüpload of opgeslagen.

Het Base64-alfabet

Index → teken volgens RFC 4648. De twee gemarkeerde laatste verschillen in de URL-veilige variant: 62 is + of -, 63 is / of _.

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

Hoe lang de uitvoer wordt

Elke 3 invoerbytes worden 4 tekens; een laatste groep van 1 of 2 bytes wordt in standaard Base64 aangevuld met = en in de URL-veilige vorm niet aangevuld.

InvoerBytesStandaardURL-veiligLengte
U1VQ==VQ4
Ul2VWw=VWw4
Ult3VWx0VWx04
UltK4VWx0Sw==VWx0Sw8
UltKi5VWx0S2k=VWx0S2k8
UltKit6VWx0S2l0VWx0S2l08

Wat Base64 doet

Base64, vastgelegd in RFC 4648, schrijft willekeurige bytes weg met 64 afdrukbare ASCII-tekens: A–Z, a–z, 0–9, + en /. Elke groep van drie bytes (24 bits) wordt opgesplitst in vier getallen van 6 bits, en elk getal kiest één teken uit het alfabet. Is de lengte van de invoer geen veelvoud van drie, dan wordt de laatste groep aangevuld met een of twee =-tekens. Het resultaat is altijd ongeveer 33% groter dan de invoer: 4 tekens voor elke 3 bytes.

Base64 bestaat omdat veel kanalen voor tekst zijn gebouwd. E-mail (MIME), data:-URL's in HTML en CSS, JSON-velden met afbeeldingen of certificaten en HTTP Basic-authenticatieheaders gebruiken allemaal Base64 om binaire data veilig te verplaatsen. Het is geen versleuteling en verbergt niets; voor het decoderen is geen sleutel nodig.

Unicode en de URL-veilige variant

Base64 codeert bytes, geen letters, dus tekst moet eerst naar bytes worden omgezet. Deze tool gebruikt altijd UTF-8, de codering waarop het web draait: é wordt twee bytes en een emoji vier. De ingebouwde btoa-functie van de browser geeft op zichzelf een foutmelding bij elk teken boven U+00FF, en daarom falen naïeve encoders bij accenten en emoji; hier gaat de tekst eerst door TextEncoder en bij het decoderen draait TextDecoder dat om. Zijn de gedecodeerde bytes geen geldige UTF-8 (een afbeelding, een zipbestand), dan toont de tool ze als hexadecimaal in plaats van als onleesbare tekst.

Standaard Base64 gebruikt + en /, die in URL's en bestandsnamen een betekenis hebben. Het URL-veilige alfabet uit sectie 5 van RFC 4648 vervangt ze door - en _, en de padding wordt meestal weggelaten. JSON Web Tokens gebruiken precies deze vorm. De decoder accepteert beide alfabetten en ontbrekende padding, dus u kunt beide plakken.

Bestanden en afbeeldingen coderen

Kies een bestand en de tool leest het lokaal in met FileReader en geeft de Base64 ervan terug, of een volledige data:-URL met het MIME-type van het bestand, klaar om te plakken in een img-tag of een CSS-achtergrond. Inline afbeeldingen besparen een HTTP-verzoek, maar worden een derde groter en kunnen niet apart worden gecachet, dus ze zijn geschikt voor kleine pictogrammen en niet voor foto's. Voor afbeeldingen met een voorbeeld en kant-en-klare HTML- en CSS-snippets gebruikt u Afbeelding naar Base64.

Veelgestelde vragen

Waarom is de Base64-uitvoer langer dan mijn invoer?
Elke 3 bytes worden 4 tekens, dus de uitvoer is ongeveer 4/3 zo groot als de invoer, plus maximaal twee opvultekens. Tekst met niet-ASCII-tekens wordt nog langer, omdat UTF-8 twee tot vier bytes per teken gebruikt.
Wat betekenen de =-tekens aan het einde?
Padding. Daarmee wordt de lengte van de uitvoer een veelvoud van vier als de lengte van de invoer geen veelvoud van drie is. Eén = betekent dat de laatste groep twee bytes had, twee =-tekens betekenen dat het er één was.
Waarom mislukt het decoderen met een foutmelding over een ongeldig teken?
De invoer bevat iets buiten het alfabet, zoals een spatie midden in een woord, een aanhalingsteken of een % uit URL-codering. Regeleinden en ontbrekende padding worden getolereerd; andere tekens niet.
Is het veilig om een wachtwoord met Base64 te coderen?
Base64 biedt geen enkele bescherming. HTTP Basic-authenticatie verstuurt user:password in Base64, en daarom mag het alleen via HTTPS worden gebruikt. Gebruik echte versleuteling of hashing om geheimen te beschermen.
Wat is het verschil tussen Base64 en Base64url?
Alleen twee tekens en de padding: Base64url gebruikt - en _ in plaats van + en / en laat = meestal weg, zodat het resultaat zonder escapen in URL's en bestandsnamen kan staan.