Base64
Skriv eller lim inn tekst, så kodes eller dekodes den med det samme.
0 tegn · 0 byte
Resultat
Slik fungerer det
Base64 skriver om vilkårlige byte til 64 tegn som overlever transport gjennom systemer bygd for tekst, for eksempel e-post og nettadresser.
Tre byte blir fire tegn, noe som gjør resultatet omtrent en tredjedel lengre enn originalen. Likhetstegnene til slutt er utfylling når antallet byte ikke er jevnt delelig med tre.
Base64 er koding, ikke kryptering. Hvem som helst kan dekode resultatet, så det beskytter ingenting. Bruk det til å frakte data, aldri til å skjule dem.
Teksten kodes som UTF-8 før den regnes om, og det er grunnen til at æ, ø, å og emoji fungerer. Nettleserens innebygde funksjon takler bare tegn under 256 på egen hånd.
Den URL-trygge varianten bytter pluss mot bindestrek og skråstrek mot understrek. Dekodingen her tar imot begge variantene, med eller uten utfylling.
Slik regner verktøyet
Ved koding gjør verktøyet først teksten om til byte i UTF-8 og lar deretter nettleserens funksjon btoa skrive dem som base64. Ved dekoding fjernes alle blanktegn, også linjeskift inne i teksten, bindestreker og understreker byttes tilbake til pluss og skråstrek, og likhetstegn legges til til lengden er delelig med fire. Deretter dekoder nettleserens atob, og bytene tolkes som UTF-8 i streng modus: byte som ikke danner gyldig UTF-8, gir en feilmelding i stedet for erstatningstegn. Under feltet vises både tegn og byte. Tegnene telles slik leseren ser dem, så en emoji med hudfarge er ett tegn, men åtte byte i UTF-8, og det er bytene som avgjør hvor langt resultatet blir.
Eksempel
Hæ blir tre byte i UTF-8: 48 for H og C3 A6 for æ. De 24 bitene deles i fire grupper på seks: 010010, 001100, 001110 og 100110, altså tallene 18, 12, 14 og 38. I base64-alfabetet, der A–Z er 0–25 og a–z er 26–51, svarer de til S, M, O og m. Resultatet blir SMOm, uten utfylling, fordi tre byte går opp i fire tegn.
Hei! er fire byte og blir SGVpIQ==. Den fjerde byten rekker bare til to tegn i en ny gruppe på fire, og de to likhetstegnene fyller ut gruppen.
Grensetilfeller
Verktøyet arbeider med tekst. Base64 som inneholder binære data, for eksempel et bilde eller en komprimert fil, gir som regel feilmeldingen ved dekoding, fordi bytene ikke er gyldig UTF-8.
Base64 i e-post er delt over flere linjer: RFC 2045 tillater høyst 76 tegn per linje og sier at linjeskift skal hoppes over ved dekoding. Siden verktøyet fjerner alle blanktegn først, kan en kodet tekstdel fra en e-post limes inn som den er.
En streng der lengden gir rest 1 ved deling på fire, kan aldri være gyldig. Et enslig siste tegn bærer bare seks bit og rekker ikke til en hel byte, og algoritmen i WHATWGs Infra-standard, som atob følger, avviser derfor slik inndata. SGVpI, altså SGVpIQ== med de tre siste tegnene klippet bort, gir feilmeldingen, mens SGVpIQ uten likhetstegn dekodes til Hei!.