Spring til indholdet
Quaestio

Base64

Skriv eller indsæt tekst, så kodes eller afkodes den med det samme.

0 tegn · 0 byte

Resultat

Skriv noget i feltet ovenfor.
Indlejr

Indlejr værktøjet på dit website

Kopiér koden, og indsæt den, hvor værktøjet skal vises, f.eks. i et blogindlæg eller på en skoleside. Det er gratis, boksen har ingen annoncer, og værktøjet regner i den besøgendes browser.

Sådan virker det

Base64 skriver vilkårlige byte om til 64 tegn, der overlever transport gennem systemer, som er bygget til tekst, for eksempel e-mail og webadresser.

Tre byte bliver til fire tegn, hvilket gør resultatet omkring en tredjedel længere end originalen. Lighedstegnene til sidst er udfyldning, når antallet af byte ikke går lige op med tre.

Base64 er kodning, ikke kryptering. Hvem som helst kan afkode resultatet, så det beskytter ingenting. Brug det til at fragte data, aldrig til at skjule dem.

Teksten kodes som UTF-8, før den regnes om, og det er grunden til, at æ, ø, å og emoji virker. Browserens indbyggede funktion klarer kun tegn under 256 på egen hånd.

Den URL-sikre variant bytter plus ud med bindestreg og skråstreg med understreg. Afkodningen her tager imod begge varianter, med eller uden udfyldning.

Sådan regner værktøjet

Ved kodning laver værktøjet først teksten om til byte i UTF-8 og lader så browserens funktion btoa skrive dem som base64. Ved afkodning fjernes alle blanktegn, også linjeskift inde i teksten, bindestreg og understreg byttes tilbage til plus og skråstreg, og der tilføjes lighedstegn, til længden kan deles med fire. Derefter afkoder browserens atob, og byte læses som UTF-8 i streng tilstand: byte, der ikke udgør gyldig UTF-8, giver en fejlmeddelelse i stedet for erstatningstegn. Under feltet vises både tegn og byte. Tegnene tælles, som læseren ser dem, så en emoji med hudfarve er ét tegn, men otte byte i UTF-8, og det er bytene, der afgør, hvor langt resultatet bliver.

Eksempel

Hø bliver til tre byte i UTF-8: 48 for H og C3 B8 for ø. De 24 bit deles i fire grupper på seks: 010010, 001100, 001110 og 111000, altså tallene 18, 12, 14 og 56. I base64-alfabetet, hvor A–Z er 0–25, a–z er 26–51 og cifrene 0–9 er 52–61, svarer de til S, M, O og 4. Resultatet bliver SMO4, uden udfyldning, fordi tre byte går lige op i fire tegn.

Hej! er fire byte og bliver til SGVqIQ==. Den fjerde byte rækker kun til to tegn i en ny gruppe på fire, og de to lighedstegn fylder gruppen ud.

Grænsetilfælde

Værktøjet arbejder med tekst. Base64 med binære data, for eksempel et billede eller en komprimeret fil, giver som regel fejlmeddelelsen ved afkodning, fordi bytene ikke er gyldig UTF-8.

Base64 i e-mail er delt på linjer: RFC 2045 tillader højst 76 tegn pr. linje og siger, at linjeskift skal springes over ved afkodning. Da værktøjet fjerner alle blanktegn først, kan en kodet tekstdel fra en mail indsættes, som den er.

En streng, hvis længde giver resten 1 ved division med fire, kan aldrig være gyldig. Et enligt sidste tegn bærer kun seks bit og rækker ikke til en hel byte, og algoritmen i WHATWG’s Infra-standard, som atob følger, afviser derfor sådan et input. SGVqI, altså SGVqIQ== med de tre sidste tegn klippet af, giver fejlmeddelelsen, mens SGVqIQ uden lighedstegn afkodes til Hej!.

Kilder

Sådan kontrolleres værktøjerne