Hur Base64-kodning fungerar

Innehållsförteckning:

Hur Base64-kodning fungerar
Hur Base64-kodning fungerar
Anonim

Base64-kodning är en process för att konvertera binär data till ett ASCII-strängformat genom att konvertera dessa binära data till en 6-bitars teckenrepresentation. Base64-metoden för kodning används när binär data, såsom bilder eller video, överförs över system som är designade för att överföra data i ett vanlig textformat (ASCII).

Varför används Base64-kodning?

Behovet av Base64-kodning kommer från de problem som uppstår när media överförs i rått binärt format till textbaserade system.

Eftersom textbaserade system (som e-post) tolkar binär data som ett brett spektrum av tecken, inklusive specialkommandotecken, misstolkas mycket av den binära data som överförs till överföringsmedia av dessa system och går förlorad eller skadas i överföringsprocessen.

Image
Image

En metod för att koda denna typ av binär data på ett sätt som undviker sådana överföringsproblem är att skicka den som vanlig ASCII-text i Base64-kodat format. Detta är en av teknikerna som används av MIME-standarden för att skicka andra data än vanlig text.

Många programmeringsspråk, som PHP och Javascript, inkluderar Base64-kodnings- och avkodningsfunktioner för att tolka data som överförs med Base64-kodning.

Base64 Encoding Logic

Base64-kodning bryter binär data i 6-bitars segment om 3 fulla byte och representerar de som utskrivbara tecken i ASCII-standard. Den gör det i huvudsak i två steg.

Det första steget är att bryta ner den binära strängen i 6-bitars block. Base64 använder endast 6 bitar (motsvarande 2^6=64 tecken) för att säkerställa att kodad data är utskrivbar och läsbar av människor. Inget av speci altecken som finns i ASCII används.

De 64 tecknen (därav namnet Base64) är 10 siffror, 26 gemener, 26 versaler samt plustecknet (+) och snedstrecket framåt (/). Det finns också ett 65:e tecken som kallas en pad, vilket är likhetstecknet (=). Detta tecken används när det sista segmentet av binär data inte innehåller hela 6 bitar.

Base64-kodningsexempel

Ta till exempel tre ASCII-nummer 155, 162 och 233. Dessa tre siffror utgör en binär ström av 1001101110100010111101001. En binär fil, som en bild, innehåller en binär ström med tiotals eller hundratusentals nollor. och ettor.

En Base64-kodare börjar med att dela upp den binära strömmen i grupperingar med sex tecken: 100110 111010 001011 101001. Var och en av dessa grupperingar översätts till siffrorna 38, 58, 11 och 41.

En sex-teckens binär ström konverterar mellan binära (eller bas-2) till decimala (bas-10) tecken genom att kvadrera varje värde som representeras av en 1 i den binära sekvensen med dess positionskvadrat. Börjar från höger och flyttar till vänster, och börjar med noll, representerar värdena i den binära strömmen 2^0, sedan 2^1, sedan 2^2, sedan 2^3, sedan 2^4, sedan 2^5.

Här är ett annat sätt att se på det. Från vänster är varje position värd 1, 2, 4, 8, 16 och 32. Om det binära talet har en 1 i luckan, lägger du till det värdet; om den har en 0 i facket, har du inte det. Den binära strängen 100110 konverteras till decim altalet 38: 02^01 + 12^1 + 12^2 + 02^3 + 02^4 + 12^5=0+2 +4+0+0+32.

Base64-kodning tar denna binära sträng och delar upp den i 6-bitarsvärdena 38, 58, 11 och 41.

Slutligen konverteras dessa siffror till ASCII-tecken med hjälp av Base64-kodningstabellen. 6-bitarsvärdena i detta exempel översätts till ASCII-sekvensen m6Lp.

Använda Base64-omvandlingstabellen:

  • 38 är m
  • 58 är 6
  • 11 är L
  • 41 är p

Denna tvåstegsprocess tillämpas på hela den binära strängen som är kodad.

För att säkerställa att den kodade datan kan skrivas ut korrekt och inte överskrider någon e-postservers radlängdsgräns, infogas nyradstecken för att hålla radlängden under 76 tecken. Nyradstecken är kodade som alla andra data.

Hela syftet med Base64-kodning, från att lägga till utfyllnad för att bevara 3-byte binära segment till att konvertera binär till text med hjälp av Base64-tabellen, är att bevara integriteten hos den överförda binära informationen.

Base64-kodningstabell

Följande tabell översätter alla 64 tecken som används i Base64-kodning.

Base64-kodningstabell
Value Char Value Char Value Char Value Char
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 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 /

Solving the Endgame

I slutet av kodningsprocessen kan det finnas ett problem. Om storleken på originaldata i byte är en multipel av tre fungerar allt bra. Om det inte är det kan det finnas tomma byte. För korrekt kodning krävs exakt 3-byte binär data.

Lösningen är att lägga till tillräckligt många byte med värdet 0 för att skapa en 3-byte grupp. Två sådana värden läggs till om data behöver en extra byte med data, ett läggs till för två extra byte.

Naturligtvis kan dessa konstgjorda efterföljande nollor inte kodas med hjälp av kodningstabellen nedan. De måste representeras av ett 65:e tecken. Base64-utfyllnadstecknet är likhetstecknet (=) och placeras i slutet av kodad data.

Rekommenderad: