Mis on Base64?

Base64 on meetod suvaliste binaarandmete, mis sisaldavad enamat kui lihtteksti märke, teisendamiseks lihttekstisõnumiks, mida saab seejärel üle arvutivõrgu edastada. Seda nimetatakse kodeeringuks. Kuigi base64 kodeeritud sõnumi väljund ei ole midagi sellist, millest inimene kergesti aru saab, koosneb see siiski 64 tavalisest inglise keele tähemärgist, millest nimi pärineb, ja täiendavat 65. tähemärki, mida kasutatakse erieesmärkidel.

Base64 idee tekkis siis, kui tekkis vajadus saada võrgusuhtluse (nt e-posti) kaudu enamat kui lihtsad tekstimärgid. Esimesed meilisõnumid said alguse märkidena, mis olid kodeeritud Ameerika teabevahetuse standardkoodi (ASCII), mis on arvutites kasutatav kodeerimismeetod inglise keele tähemärkide esitamiseks ekraanidel või printerites tekstina. Läbimiseks vajamineva täiendava binaarse teabena töötati välja uued kodeerimisskeemid.

Base64 kodeerimismeetodit kirjeldati esmakordselt nn Multipurpose Internet Mail Extensions (MIME) standardis. MIME-standard määratles meetodid, mille abil saab ASCII-jadadesse kodeerida ja meilisõnumitega edastada ka muid märke, mis ei olnud ASCII-kodeeritud, nagu näiteks mitteinglise keeltes kasutatavad tähestikud, ja muud suvalised kahendandmed. Kahest peamisest MIME-standardis kirjeldatud kodeerimisviisist jagab base64 rolli teise, mida nimetatakse tsiteeritud-prinditavaks. Kuigi tsiteeritud-prinditav meetod on võimeline laiendama ASCII-d mõnevõrra kaugemale oma piiratud 94 prinditavast märgist, võib base64 võtta mis tahes baitide jada ja teisendada selle ASCII-jadaks.

Base64 peab võtma andmejadasid, mis muidu ei vastaks ASCII standardile, ja teisendama need ASCII-ks. Selleks on kodeerimismeetod protsess, mille käigus kogutakse andmed kolmebaidistesse rühmadesse ja teisendatakse need neljaks numbriks, mis tähistavad vastavaid ASCII-märke. Kuna bait on kaheksabitine, kus iga bitti tähistatakse kas ühe või nulliga, seotakse kolm baiti otsast lõpuni ja kogu jada läheb 24-bitisesse puhvrisse. Seejärel jagatakse 24 ühte ja nulli neljaks kuuest bitist koosnevaks rühmaks, kus igaühele määratakse ASCII-märgile vastavad numbrid.

Kuna base64 on võimeline kodeerima mis tahes binaarandmeid, võib protsessi läbida mis tahes baitide jada. Juhtudel, kus kodeerimiseks kasutatavate baitide arv ei jagu kolmega, on aga konks, nii et bitid mahuvad puhvrisse. Kui baidijada sisaldab näiteks nelja või viit baiti, on puhvri täitmiseks ja kogu 24 bitti moodustamiseks midagi siiski vaja. Nendel juhtudel tähistatakse iga puuduvat baiti kaheksa nulliga ja seejärel teisendatakse see valmis kodeeringus polsterdusmärkideks. Siit pärineb ka eelnevalt mainitud 0. märk, mis on kodeeritud sõnumis esindatud võrdusmärgiga (=); see ilmub alati ainult kodeeringu lõpus, kui täiteaine on vajalik.

Kuigi base64 loodi algselt binaarandmete edastamiseks meilisõnumite kaudu, on selle kasutamine peale MIME-i muutunud mängu ka paljudes muudes valdkondades. Üks selline üsna levinud kasutusviis on veebiandmebaasid ja -rakendused andmete kodeerimiseks veebivormil ühtse ressursiotsija (URL) loomiseks. Laiendatav märgistuskeel (XML) kasutab ka varianti, mis võimaldab XML-dokumentidesse lisada binaarandmeid, näiteks väikseid pilte. Krüpteerimismeetodite ja muude turvalisusega seotud tehnikate (nt paroolide peitmise) jaoks on olemas ka muud variatsioonid.