Base64
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 |
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | A | 16 | Q | 32 | g | 48 | w | |||
| 1 | B | 17 | R | 33 | h | 49 | x | |||
| 2 | C | 18 | S | 34 | i | 50 | y | |||
| 3 | D | 19 | T | 35 | j | 51 | z | |||
| 4 | E | 20 | U | 36 | k | 52 | 0 | |||
| 5 | F | 21 | V | 37 | l | 53 | 1 | |||
| 6 | G | 22 | W | 38 | m | 54 | 2 | |||
| 7 | H | 23 | X | 39 | n | 55 | 3 | |||
| 8 | I | 24 | Y | 40 | o | 56 | 4 | |||
| 9 | J | 25 | Z | 41 | p | 57 | 5 | |||
| 10 | K | 26 | a | 42 | q | 58 | 6 | |||
| 11 | L | 27 | b | 43 | r | 59 | 7 | |||
| 12 | M | 28 | c | 44 | s | 60 | 8 | |||
| 13 | N | 29 | d | 45 | t | 61 | 9 | |||
| 14 | O | 30 | e | 46 | u | 62 | + - | |||
| 15 | P | 31 | f | 47 | v | 63 | / _ |
Exempel:
| Byte | M | a | n | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ASCII-vÀrden | 77 | 97 | 110 | |||||||||||||||||||||
| Bitmönster | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 0 |
| 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.
Se Àven
[redigera | redigera wikitext]- MIME, standarden som möjliggör bilagor i modern e-post. Base64 anvÀnds dÀr bl.a. för bilagor i binÀrform.
KĂ€llor
[redigera | redigera wikitext]
| ||||||||||||||