...
Ofte sendes binærdata av ulikt format, og man vil unngå risikoen for at ulike protokoller tolker dataene ulikt. Dersom man streamer bits og bytes over nettverket i råformat, vil man risikere at noen protokoller tror det overføres spesialtegn i bitmønsteret. Dette betyr at når man sender meldinger i "klartekst" rene bits uten å kode dem, vil man ikke ha noen garanti for at ulike protokoller tolker tegnene likt. Ved hjelp av Base64 omformer man binærdata til tekst slik at det blir enklere å sende både epost og html-skjemaer.
...
Selv om MIME i hovedsak er utviklet for SMTP, er standardene definert i MIME også viktig for kommunikasjonsprotokoller utenom epost, som HTTP. Servere setter inn MIME-headere i begynnelsen av enhver web-overføring. Klienter bruker denne mediatype-headeren (MIME type) for å velge riktig visningsprogram for den typen data som er indikert i headeren. Noen av disse visningsprogrammene er innebygd i nettleseren eller webklienten.
3. Virkemåte
Base64 fungerer i praksis på 2 måter: Koding og dekoding.
...
Nå har vi 8 ulike 6-bits mønster, og vi kan da bruke oversettelsestabellen fra forrige seksjon for å få den endelige Base64-strengen:
Bits | 010001 | 000110 | 000101 | 110100 | 011000 | 010000 | 000000 | 000000 |
Tallverdi | 17 | 6 | 5 | 52 | 24 | 16 | 0 | 0 |
Tegn | R | G | F | 0 | Y | Q | = | = |
...
Når man skal dekode fra Base64, følger man egentlig bare prosessen for å kode, bare baklengs. For enkelhets skyld, kan vi dekode RGF0YQ==, som ble brukt over. Det første man gjør, er å se på hvert enkelt tegn i strengen, for å så finne den korresponderende tallverdien i oppslagstabellen:
Tegn | R | G | F | 0 | Y | Q | = | = |
Tallverdi | 17 | 6 | 5 | 52 | 24 | 16 | 0 | 0 |
Bits | 010001 | 000110 | 000101 | 110100 | 011000 | 010000 | 000000 | 000000 |
...
De 2 padding-tegnene (==) i slutten, sier at de 4 siste tegn kun vil bli gjort om til ett tegn, og vi kan derfor ignorere de 2 siste gruppene. Hadde det vært ett padding-tegn, ville dette betydd at de 4 siste tegnene ville blitt gjort om til 2 tegn. Resten av gruppene kan vi bruke til å oversette til de dekodede tegnene, igjen via en ASCII-/UTF-8-tabell:
Bitmønster | 01000100 | 01100001 | 01110100 | 01100001 |
Tegn | D | a | t | a |
...