Type a search term to find related articles by LIMS subject matter experts gathered from the most trusted and dynamic collaboration tools in the laboratory informatics industry.
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:
|