UltKit

Base64 encode og decode

Kod tekst eller en fil til Base64, eller afkod Base64 tilbage til læsbar tekst. Unicode håndteres korrekt, det URL-sikre alfabet er kun et klik væk, og afkodningen accepterer begge alfabeter med eller uden udfyldning (padding).

Tilstand

0 tegn · 0 ord · 0 linjer

0 tegn · 0 ord · 0 linjer

Kører udelukkende i denne browserfane. Din tekst bliver aldrig uploadet eller gemt.

Base64-alfabetet

Indeks → tegn fra RFC 4648. De to sidste, der er fremhævet, er forskellige i den URL-sikre variant: 62 er + eller -, 63 er / eller _.

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

Hvor langt outputtet bliver

Hver 3 input-bytes bliver til 4 tegn; en sidste gruppe på 1 eller 2 bytes udfyldes med = i standard Base64 og lades uden padding i den URL-sikre form.

InputBytesStandardURL-sikkerLængde
U1VQ==VQ4
Ul2VWw=VWw4
Ult3VWx0VWx04
UltK4VWx0Sw==VWx0Sw8
UltKi5VWx0S2k=VWx0S2k8
UltKit6VWx0S2l0VWx0S2l08

Hvad Base64 gør

Base64, defineret i RFC 4648, skriver vilkårlige bytes med 64 printbare ASCII-tegn: A–Z, a–z, 0–9, + og /. Hver gruppe på tre bytes (24 bit) deles op i fire 6-bit-tal, og hvert tal vælger ét tegn fra alfabetet. Hvis inputtets længde ikke er deleligt med tre, udfyldes den sidste gruppe med ét eller to =-tegn. Resultatet er altid omkring 33 % større end input: 4 tegn for hver 3 bytes.

Det findes, fordi mange kanaler er bygget til tekst. E-mail (MIME), data:-URL'er i HTML og CSS, JSON-felter med billeder eller certifikater og HTTP Basic-autentificeringsheadere bruger alle Base64 til at flytte binære data sikkert. Det er ikke kryptering og skjuler ingenting; afkodning kræver ingen nøgle.

Unicode og den URL-sikre variant

Base64 koder bytes, ikke bogstaver, så tekst skal først omdannes til bytes. Dette værktøj bruger altid UTF-8, den kodning internettet kører på: é bliver til to bytes og en emoji til fire. Browserens indbyggede funktion btoa giver alene en fejl ved alle tegn over U+00FF, og derfor fejler simple kodere på accenter og emojis. Her går teksten først gennem TextEncoder, og afkodning vender det om med TextDecoder. Hvis de afkodede bytes ikke er gyldig UTF-8 (et billede, en zip-fil), viser værktøjet dem som hexadecimal i stedet for forvansket tekst.

Standard-Base64 bruger + og /, som har betydning i URL'er og filnavne. Det URL-sikre alfabet fra afsnit 5 i RFC 4648 erstatter dem med - og _, og padding udelades som regel. JSON Web Tokens bruger netop denne form. Afkoderen accepterer begge alfabeter og manglende padding, så du kan indsætte begge dele.

Kodning af filer og billeder

Vælg en fil, så læser værktøjet den lokalt med FileReader og returnerer dens Base64 eller en komplet data:-URL med filens MIME-type, klar til at indsætte i et img-tag eller en CSS-baggrund. Indlejrede billeder sparer en HTTP-forespørgsel, men bliver en tredjedel større og kan ikke caches separat, så de passer til små ikoner frem for fotos. Til billeder med forhåndsvisning og færdige HTML- og CSS-uddrag kan du bruge Billede til Base64.

Ofte stillede spørgsmål

Hvorfor er Base64-resultatet længere end mit input?
Hver 3 bytes bliver til 4 tegn, så outputtet er omkring 4/3 af inputtets størrelse plus op til to paddingtegn. Tekst med ikke-ASCII-tegn bliver endnu længere, fordi UTF-8 bruger to til fire bytes pr. tegn.
Hvad betyder lighedstegnene (=) til sidst?
Padding. De gør outputtets længde delelig med fire, når inputtets længde ikke er delelig med tre. Ét = betyder, at den sidste gruppe havde to bytes, to = betyder, at den havde én byte.
Hvorfor fejler afkodningen med en fejl om ugyldigt tegn?
Inputtet indeholder noget uden for alfabetet, f.eks. et mellemrum midt i et ord, et citationstegn eller et % fra URL-kodning. Linjeskift og manglende padding tolereres; andre tegn gør ikke.
Er det sikkert at Base64-kode en adgangskode?
Base64 giver ingen beskyttelse. HTTP Basic-autentificering sender bruger:adgangskode i Base64, og derfor må den kun bruges over HTTPS. Brug rigtig kryptering eller hashing til at beskytte hemmeligheder.
Hvad er forskellen på Base64 og Base64url?
Kun to tegn og padding: Base64url bruger - og _ i stedet for + og / og udelader som regel =, så resultatet kan stå i URL'er og filnavne uden escaping.