Hva er Base64?
Base64 er en metode for å konvertere vilkårlige binære data, data som består av mer enn bare ren teksttegn, til en ren tekstmelding som deretter kan overføres over et datanettverk. Det er det som kalles en koding. Mens utdataene fra en base64-kodet melding ikke er noe et menneske lett kan forstå, består det fortsatt av 64 vanlige engelskspråklige tegn, som er der navnet kommer fra, med et ekstra 65. tegn som brukes til spesielle formål.
Ideen bak base64 kom til da behovet oppstod for å få mer enn enkle teksttegn gjennom nettverkskommunikasjon som e-post. De første e-postmeldingene startet som tegn kodet i American Standard Code for Information Interchange (ASCII), kodingsmetoden som brukes på datamaskiner for å representere engelskspråklige alfabettegn som tekst på skjermer eller skrivere. Som ekstra binær informasjon som trengs for å komme igjennom, ble nye kodingsordninger utviklet.
Kodingsmetoden base64 ble først beskrevet i den som er kjent som MIME-standarden Multipurpose Internet Mail Extensions (MIME). MIME-standarden definerte metoder som andre tegn som ikke var ASCII-kodet, for eksempel alfabeter som brukes av ikke-engelske språk, samt andre vilkårlige binære data, også kan kodes i ASCII-sekvenser og overføres via e-postmeldinger. Av de to primære kodingsmidlene som er beskrevet av MIME-standarden, deler base64 rollen med en annen kjent som sitert-utskrivbar. Mens den sitert-utskrivbare metoden er i stand til å utvide ASCII noe utover de begrensede 94 utskrivbare tegnene, kan base64 ta hvilken som helst sekvens av byte og konvertere den til en ASCII-sekvens.
Base64 må ta strenger med data som ellers ikke vil oppfylle ASCII-standarden og konvertere dem til ASCII. For å gjøre dette er kodingsmetoden en prosess for å samle dataene i grupper på tre byte og konvertere dem til fire tall som representerer tilsvarende ASCII-tegn. Siden en byte er åtte biter, der hver bit er representert med enten en eller null, kobles tre byte ende til ende og hele sekvensen går i en 24-bits buffer. De 24 ene og nullene blir deretter delt opp i fire grupper på seks biter, hvor hver deretter tildeles tall som samsvarer med et ASCII-tegn.
Siden base64 er i stand til å kode alle binære data, kan enhver byte-sekvens gå gjennom prosessen. Det er imidlertid en fangst i de tilfeller hvor antallet byte for koding ikke kan deles med tre, slik at bitene kan passe inn i bufferen. Hvis en bytesekvens inneholder for eksempel fire eller fem byte, er det fortsatt noe som trengs for å fylle bufferen og utgjøre hele 24 biter. I disse tilfellene er hver manglende byte representert av åtte 0s og blir deretter konvertert til polstringstegn i den ferdige kodingen. Det er her det tidligere nevnte 65. tegnet kommer fra, representert i den kodede meldingen med et likhetstegn (=); det vises bare noen gang helt på slutten av en koding dersom et fyllstoff er nødvendig.
Selv om base64 opprinnelig ble utviklet for overføring av binære data via e-postmeldinger, har bruken kommet i spill på en rekke andre områder foruten MIME. En slik ganske vanlig bruk er for webdatabaser og applikasjoner for å kode data for oppretting av en enhetlig ressurslokator (URL) på et nettskjema. Det utvidbare markeringsspråket (XML) bruker også en variant som gjør at binære data, for eksempel små bilder, kan inkluderes i XML-dokumenter. Andre varianter finnes for krypteringsmetoder og andre sikkerhetsrelaterte teknikker, for eksempel å skjule passord.