Vad är Base64?

Base64 är en metod för att konvertera godtycklig binär data, data som består av mer än bara vanliga texttecken, till ett vanligt textmeddelande som sedan kan överföras över ett datornätverk. Det är vad som kallas en kodning. Även om utmatningen av ett base64-kodat meddelande inte är något en människa lätt kan förstå, består det fortfarande av 64 vanliga engelska tecken, vilket är där namnet kommer ifrån, med ytterligare ett 65:e tecken som används för speciella ändamål.

Idén bakom base64 kom till när behovet uppstod att få mer än enkla texttecken genom nätverkskommunikation som e-post. De första e-postmeddelandena började som tecken kodade i American Standard Code for Information Interchange (ASCII), den kodningsmetod som används i datorer för att representera engelska alfabettecken som text på skärmar eller skrivare. Eftersom ytterligare binär information behövdes för att komma igenom, utvecklades nya kodningsscheman.

Base64-kodningsmetoden beskrevs först i vad som kallas MIME-standarden (Multipurpose Internet Mail Extensions). MIME-standarden definierade metoder med vilka andra tecken som inte var ASCII-kodade, såsom alfabet som används av icke-engelska språk, såväl som andra godtyckliga binära data, också kunde kodas till ASCII-sekvenser och överföras via e-postmeddelanden. Av de två primära kodningssätten som beskrivs av MIME-standarden delar base64 rollen med en annan känd som quoted-printable. Medan den citerade-utskrivbara metoden kan utöka ASCII något utöver dess begränsade 94 utskrivbara tecken, kan base64 ta vilken sekvens av byte som helst och konvertera den till en ASCII-sekvens.

Base64 måste ta strängar av data som annars inte skulle uppfylla ASCII-standarden och konvertera dem till ASCII. För att göra detta är kodningsmetoden en process för att samla in data i grupper om tre byte och omvandla dem till fyra siffror som representerar motsvarande ASCII-tecken. Eftersom en byte är åtta bitar, där varje bit representeras av antingen en etta eller noll, är tre byte länkade ände till ände och hela sekvensen går in i en 24-bitars buffert. De 24 ettorna och nollorna delas sedan upp i fyra grupper om sex bitar, där var och en sedan tilldelas nummer som matchar ett ASCII-tecken.

Eftersom base64 kan koda vilken binär data som helst, kan vilken sekvens av byte som helst gå igenom processen. Det finns dock en hake i de fall där antalet byte för kodning inte är delbart med tre så att bitarna kan passa in i bufferten. Om en bytesekvens innehåller, säg, fyra eller fem byte, behövs fortfarande något för att fylla bufferten och göra upp hela 24 bitarna. I dessa fall representeras varje saknad byte av åtta nollor och omvandlas därefter till utfyllnadstecken i den färdiga kodningen. Det är härifrån det tidigare nämnda 0:e tecknet kommer ifrån, representerat i det kodade meddelandet med ett likhetstecken (=); det visas bara i slutet av en kodning om ett fyllmedel skulle behövas.

Även om base64 ursprungligen utformades för att överföra binär data via e-postmeddelanden, har dess användning kommit in i ett antal andra områden förutom MIME. En sådan ganska vanlig användning är att webbdatabaser och applikationer kodar data för att skapa en enhetlig resurslokaliserare (URL) på ett webbformulär. Extensible Markup Language (XML) använder också en variant som gör att binära data, såsom små bilder, kan inkluderas i XML-dokument. Andra varianter finns för krypteringsmetoder och andra säkerhetsrelaterade tekniker som att dölja lösenord.