UltKit

Base64 koda och avkoda

Gör om text eller en fil till Base64, eller avkoda Base64 tillbaka till läsbar text. Unicode hanteras korrekt, det URL-säkra alfabetet är ett klick bort och avkodningen accepterar båda alfabeten, med eller utan utfyllnad.

Läge

0 tecken · 0 ord · 0 rader

0 tecken · 0 ord · 0 rader

Körs helt i den här webbläsarfliken. Din text laddas aldrig upp eller sparas.

Base64-alfabetet

Index → tecken enligt RFC 4648. De två sista, markerade, skiljer sig i den URL-säkra varianten: 62 är + eller -, 63 är / 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/ _

Hur lång utdata blir

Var 3:e indatabyte blir 4 tecken; en sista grupp på 1 eller 2 byte fylls ut med = i standard-Base64 och lämnas utan utfyllnad i den URL-säkra formen.

IndataByteStandardURL-säkerLängd
U1VQ==VQ4
Ul2VWw=VWw4
Ult3VWx0VWx04
UltK4VWx0Sw==VWx0Sw8
UltKi5VWx0S2k=VWx0S2k8
UltKit6VWx0S2l0VWx0S2l08

Vad Base64 gör

Base64, definierat i RFC 4648, skriver godtyckliga bytes med 64 utskrivbara ASCII-tecken: A–Z, a–z, 0–9, + och /. Varje grupp om tre bytes (24 bitar) delas upp i fyra 6-bitarstal, och varje tal väljer ett tecken ur alfabetet. När indatans längd inte är en multipel av tre fylls den sista gruppen ut med ett eller två =-tecken. Resultatet blir alltid ungefär 33 % större än indata: 4 tecken för var 3:e byte.

Det finns eftersom många kanaler byggdes för text. E-post (MIME), data:-URL:er i HTML och CSS, JSON-fält som innehåller bilder eller certifikat och HTTP Basic-autentiseringsrubriker använder alla Base64 för att flytta binärdata på ett säkert sätt. Det är inte kryptering och döljer ingenting; avkodning kräver ingen nyckel.

Unicode och den URL-säkra varianten

Base64 kodar bytes, inte bokstäver, så text måste först omvandlas till bytes. Verktyget använder alltid UTF-8, den kodning som webben bygger på: é blir två bytes och en emoji fyra. Webbläsarens inbyggda funktion btoa ger ensam ett fel för alla tecken över U+00FF, och därför misslyckas naiva kodare med accenter och emojis. Här går texten först genom TextEncoder, och avkodningen vänder det med TextDecoder. Om de avkodade bytena inte är giltig UTF-8 (en bild, en zip-fil) visar verktyget dem som hexadecimala värden i stället för förvrängd text.

Standard-Base64 använder + och /, som har särskilda betydelser i URL:er och filnamn. Det URL-säkra alfabetet från avsnitt 5 i RFC 4648 ersätter dem med - och _, och utfyllnaden utelämnas oftast. JSON Web Tokens använder exakt den här formen. Avkodaren accepterar båda alfabeten och saknad utfyllnad, så du kan klistra in vilken som helst.

Koda filer och bilder

Välj en fil så läser verktyget in den lokalt med FileReader och returnerar dess Base64, eller en komplett data:-URL med filens MIME-typ, redo att klistras in i en img-tagg eller en CSS-bakgrund. Inbäddade bilder sparar en HTTP-förfrågan men blir en tredjedel större och kan inte cachas separat, så de passar för små ikoner snarare än foton. För bilder med förhandsvisning och färdiga HTML- och CSS-kodavsnitt, använd Bild till Base64.

Vanliga frågor

Varför blir Base64-resultatet längre än det jag matade in?
Var 3:e byte blir 4 tecken, så utdata blir ungefär 4/3 av indatans storlek, plus upp till två utfyllnadstecken. Text som inte är ASCII blir ännu längre, eftersom UTF-8 använder två till fyra bytes per tecken.
Vad betyder likhetstecknen (=) i slutet?
Utfyllnad. Den gör utdatans längd till en multipel av fyra när indatans längd inte är en multipel av tre. Ett = betyder att den sista gruppen hade två bytes, två = betyder att den hade en byte.
Varför misslyckas avkodningen med ett fel om ogiltigt tecken?
Indata innehåller något utanför alfabetet, till exempel ett mellanslag mitt i ett ord, ett citattecken eller ett % från URL-kodning. Radbrytningar och saknad utfyllnad tolereras, andra tecken gör det inte.
Är det säkert att Base64-koda ett lösenord?
Base64 ger inget skydd. HTTP Basic-autentisering skickar user:password i Base64, och därför får den bara användas över HTTPS. Använd riktig kryptering eller hashning för att skydda hemligheter.
Vad är skillnaden mellan Base64 och Base64url?
Bara två tecken och utfyllnaden: Base64url använder - och _ i stället för + och / och utelämnar oftast =, så resultatet kan ligga i URL:er och filnamn utan att behöva escapas.