Vad är Base64?
Base64 är en metod för att konvertera godtyckliga binära 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. Medan utgången från ett bas64-kodat meddelande inte är något som en människa lätt kan förstå, består det fortfarande av 64 vanliga engelskspråkiga tecken, vilket är där namnet kommer från, med ytterligare 65: e tecken som används för speciella ändamål.
Idén bakom base64 kom när behovet uppstod för 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), kodningsmetoden som används i datorer för att representera engelska alfabetstecken som text på skärmar eller skrivare. Som ytterligare binär information som behövs för att komma igenom utvecklades nya kodningsscheman.
Kodningsmetoden base64 beskrevs först i den så kallade MIME-standarden Multipurpose Internet Mail Extensions (MIME). MIME-standarden definierade metoder med vilka andra tecken som inte var ASCII-kodade, till exempel alfabet som används av icke-engelska språk, liksom andra godtyckliga binära data, också kan kodas in i ASCII-sekvenser och överföras via e-postmeddelanden. Av de två primära kodningsmedlen som beskrivs med MIME-standarden delar base64 rollen med en annan känd som citerad-utskrivbar. Medan den citerade utskrivbara metoden kan förlänga ASCII något utöver de begränsade 94 utskrivbara tecknen, kan base64 ta vilken som helst sekvens av byte och konvertera den till en ASCII-sekvens.
Base64 måste ta strängar med 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 konvertera dem till fyra nummer som representerar motsvarande ASCII-tecken. Eftersom en byte är åtta bitar, där varje bit representeras av antingen en eller noll, är tre byte länkade ände till slut och hela sekvensen går in i en 24-bitars buffert. De 24 enorna och nollorna delas sedan upp i fyra grupper om sex bitar, där var och en tilldelas sedan nummer som matchar ett ASCII-tecken.
Eftersom base64 kan koda all binär data, kan alla sekvenser av byte gå igenom processen. Det finns dock en fångst i de fall där antalet byte för kodning inte kan delas med tre så att bitarna kan passa in i bufferten. Om en bytesekvens innehåller, till exempel, fyra eller fem byte, behövs fortfarande något för att fylla bufferten och utgöra hela 24 bitar. I dessa fall representeras varje saknad byte av åtta O och omvandlas därefter till polstecken i den färdiga kodningen. Det är här det tidigare nämnda 65: e tecknet kommer från, representerat i det kodade meddelandet med ett likhetstecken (=); det visas bara någonsin i slutet av en kodning om ett fyllmedel skulle behövas.
Även om base64 ursprungligen utformades för att överföra binära data via e-postmeddelanden, har dess användning spelat in på 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 resurslokalisator (URL) på ett webbformulär. XML (Extensible Markup Language) använder också en variant som gör det möjligt att inkludera binära data, t.ex. små bilder, i XML-dokument. Andra variationer finns för krypteringsmetoder och andra säkerhetsrelaterade tekniker som döljer lösenord.