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).
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 _.
- 0A
- 1B
- 2C
- 3D
- 4E
- 5F
- 6G
- 7H
- 8I
- 9J
- 10K
- 11L
- 12M
- 13N
- 14O
- 15P
- 16Q
- 17R
- 18S
- 19T
- 20U
- 21V
- 22W
- 23X
- 24Y
- 25Z
- 26a
- 27b
- 28c
- 29d
- 30e
- 31f
- 32g
- 33h
- 34i
- 35j
- 36k
- 37l
- 38m
- 39n
- 40o
- 41p
- 42q
- 43r
- 44s
- 45t
- 46u
- 47v
- 48w
- 49x
- 50y
- 51z
- 520
- 531
- 542
- 553
- 564
- 575
- 586
- 597
- 608
- 619
- 62+ -
- 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.
| Input | Bytes | Standard | URL-sikker | Længde |
|---|---|---|---|---|
U | 1 | VQ== | VQ | 4 |
Ul | 2 | VWw= | VWw | 4 |
Ult | 3 | VWx0 | VWx0 | 4 |
UltK | 4 | VWx0Sw== | VWx0Sw | 8 |
UltKi | 5 | VWx0S2k= | VWx0S2k | 8 |
UltKit | 6 | VWx0S2l0 | VWx0S2l0 | 8 |
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.