Hoppa till innehÄllet

Base64

FrÄn Wikipedia

Base64 Àr en metod som anvÀnds för att koda binÀra data med en uppsÀttning 7-bitars ASCII-tecken, för distribution via till exempel E-post. Kodningen baseras pÄ ett talsystem med 64 som bas, till skillnad frÄn det decimala talsystemet dÀr basen Àr 10 och det binÀra talsystemet dÀr basen Àr 2. Base64 utvecklades för kodning av bilagor i e-post, enligt systemet MIME. Systemet anvÀnd Àven vid behov i e-postens huvud och i webbadresser med tecken andra Àn de i ASCII (utom i domÀnnamnet, dÀr istÀllet IDN anvÀnds).

Informationen som skall kodas tolkas som en ström av oktetter (byte), det vill sÀga dataenheter om 8 bitar. Dessa delas in i grupper pÄ tre byte, alltsÄ vardera med 24 bitar. Grupperna kodas genom att varje grupp delas i fyra delar, som dÄ bestÄr av 6 bitar, vilket motsvarar en siffra med basen 64 (26 = 64). Detta motsvarar ungefÀr det antal tecken som kan överföras över alla tÀnkbara e-postservrar utan risk för förvanskning (till exempel blankslag och radbyten kan i vissa fall tillkomma eller försvinna). Om antalet byte som skall kodas inte Àr delbart med 3, varvid den sista gruppen bara har 1 eller 2 byte, kodas den i 2 eller 3 base64-siffror istÀllet för de vanliga 4.

Base64 anvĂ€nder i tur och ordning ASCII-tecknen A–Z (för nr 0–25), a–z (26–51), 0–9 (52–61) och tvĂ„ ytterligare tecken för att koda all information.   I RFC1421[1] eller RFC 2045 (som anvĂ€nds för MIME, e-post) anvĂ€nds tecknen ”+” och ”/” som de tvĂ„ sista tecknen och dessa bör enligt RFC3548 anvĂ€ndas dĂ„ annat inte anges. För URL:er och filnamn finns en variant, ”Base 64 Encoding with URL and Filename Safe Alphabet” dĂ€r de tvĂ„ sista Ă€r ”-” och ”_”, eftersom ”+” och ”/” i det sammanhanget kan vara reserverade tecken. Fler varianter finns. Tecknet ”=” har en speciell funktion som pĂ„fyllnadssymbol och anvĂ€nds om den okodade informationen inte Ă€r i jĂ€mna multiplar om tre byte, varvid en ”=” lĂ€ggs till slutet pĂ„ den kodade texten för varje saknad byte. Detta görs inte i alla anvĂ€ndningar av Base64 och Ă€r inte nödvĂ€ndigt för att Ă„terskapa innehĂ„llet (antalet ”=” att fylla pĂ„ Ă€r sĂ„ mĂ„nga som behövs för att fĂ„ antal Base64-tecken att bli jĂ€mnt delbart med 4). Radbyten lĂ€ggs in enligt behov. I MIME fĂ„r resultatet av base64-kodningen inte ha rader lĂ€ngre Ă€n 76 tecken.

VÀrde Tecken   VÀrde Tecken   VÀrde Tecken   VÀrde Tecken
0A16Q32g48w
1B17R33h49x
2C18S34i50y
3D19T35j51z
4E20U36k520
5F21V37l531
6G22W38m542
7H23X39n553
8I24Y40o564
9J25Z41p575
10K26a42q586
11L27b43r597
12M28c44s608
13N29d45t619
14O30e46u62+ -
15P31f47v63/ _

Exempel:

Byte M a n
ASCII-vÀrden 77 97 110
Bitmönster 010011010110000101101110
VĂ€rde per 6 bitar 19 22 5 46
Base64-kodat T W F u

Som exemplet visar, kodar Base64 tre bytes till fyra base64-siffror. Om det i slutet av datamÀngden Àr fÀrre Àn tre bytes kvar kan man fylla pÄ med noll-bytes och efter kodning ta bort lika mÄnga base64-tecken som fylldes pÄ eller ersÀtta med '='. Detsamma kan man göra dÄ man Äkerskapar ursprunget, fylla pÄ med 'A' tills det Àr fyra base64-tecken (eller tolka '=' som 'A' dvs noll-bitar), och efter avkodning ta bort lika mÄnga bytes som fylldes pÄ.

Base64 beskrevs 1987 i RFC989[2] som del av privacy-enhanced mail, e-post med skydd mot otillÄten lÀsning. Base64 beskrivs (tillsammans med Base32 och Base16) i detalj i RFC3548[3]

Kodningen har vissa sÀkerhetsaspekter:

  • Om extra tecken sĂ„som mellanslag och blankslag tillĂ„ts och ignoreras kan extra information smugglas med en Base64-kodad fil.
  • Extra tecken kan leda till buffertöverskridning eller andra problem i slarvigt skrivna tillĂ€mpningar.
  • Enklare sĂ€kerhetsprogram kan inte avkoda base64, vilket utnyttjats av spammare och virusskickare som skickat bilagor i base64 med dĂ„ligheter. Antivirus hanterar numera detta.
  • DĂ„ lösenord kodas med Base64, till exempel i www-kakor, eller webbadresser, ser anvĂ€ndaren inte att det Ă€r frĂ„gan om lösenord och kan hantera dessa oförsiktigt, till exempel publicera en webbadress dĂ€r det egna lösenordet ingĂ„r.
  • MIME, standarden som möjliggör bilagor i modern e-post. Base64 anvĂ€nds dĂ€r bl.a. för bilagor i binĂ€rform.
  1. ↑ RFC 1421 - Privacy Enhancement for Internet Electronic Mail
  2. ↑ RFC 989 - Privacy enhancement for Internet electronic mail
  3. ↑ RFC 3548 - The Base16, Base32, and Base64 Data Encodings