Skip to main content

Sådan fungerer Base64-kodning

Specialization and Trade: Crash Course Economics #2 (Kan 2025)

Specialization and Trade: Crash Course Economics #2 (Kan 2025)
Anonim

Hvis internettet er informationsvejen, er stien til e-mail en smal kløft. Kun meget små vogne kan passere.

Transportsystemet med e-mail er designet til almindelig ASCII-tekst. At forsøge at sende tekst på andre sprog eller vilkårlig filer er som at få en lastbil gennem kløften.

Hvordan går den store lastbil gennem Ravinen?

Så hvordan sender du en stor lastbil gennem en lille kløft? Du skal tage den i stykker i den ene ende, transportere stykkerne gennem kløften og genopbygge trucken fra stykkerne i den anden ende.

Det samme sker, når du sender en fil vedhæftning via e-mail. I en proces, der kaldes kodning, transformeres den binære data til ASCII-tekst, som kan transporteres i e-mail uden problemer. På modtagerens ende afkodes dataene, og den oprindelige fil genopbygges.

En metode til kodning af vilkårlig data som almindelig ASCII-tekst er Base64. Det er en af ​​de teknikker, der anvendes af MIME-standarden til at sende andre data end almindelig tekst.

Base64 til undsætning

Base64-kodning tager tre bytes, der hver består af otte bits, og repræsenterer dem som fire udskrivbare tegn i ASCII-standarden. Det gør det i stort set to trin.

Det første skridt er at konvertere tre byte til fire tal på seks bit. Hver karakter i ASCII-standarden består af syv bits. Base64 bruger kun 6 bits (svarende til 2 ^ 6 = 64 tegn) for at sikre, at kodede data kan udskrives og læses menneskeligt. Ingen af ​​specialtegnene, der er tilgængelige i ASCII, anvendes.

De 64 tegn (dermed navnet Base64) er 10 cifre, 26 små bogstaver, 26 store bogstaver samt '+' og '/'.

Hvis for eksempel de tre byte er 155, 162 og 233, svarer den tilsvarende (og skræmmende) bitstrøm 100110111010001011101001, hvilket igen svarer til 6-bit værdierne 38, 58, 11 og 41.

Disse tal konverteres til ASCII-tegn i andet trin ved hjælp af Base64-kodningstabellen. 6-bit værdierne i vores eksempel oversættes til ASCII-sekvensen "m6Lp".

  • 155 -> 10011011
  • 162 -> 10100010
  • 233 -> 11101001
  • 100110 -> 38
  • 111010 -> 58
  • 001011 -> 11
  • 101001 -> 41
  • 38 -> m
  • 58 -> 6
  • 11 -> L
  • 41 -> s

Denne to-trins proces anvendes til hele sekvensen af ​​byte, som er kodet. For at sikre, at de kodede data kan udskrives korrekt og ikke overskrider en hvilken som helst mailserver grænselængde, indsættes nye linjer for at holde linjelængder under 76 tegn. Newline-tegnene er kodet som alle andre data.

Løse Endgame

I slutningen af ​​kodningsprocessen kan vi komme ind i et problem. Hvis størrelsen på de originale data i bytes er et flertal på tre, fungerer det fint. Hvis det ikke er tilfældet, kan vi ende med en eller to 8-bit byte. For korrekt kodning har vi dog brug for præcis tre bytes.

Løsningen er at tilføje nok byte med en værdi på '0' for at oprette en 3-byte gruppe. To sådanne værdier er tilføjet, hvis vi har en ekstra byte af data, en er vedlagt for to ekstra bytes.

Selvfølgelig kan disse kunstige efterfølgende '0'er ikke kodes ved hjælp af kodningstabellen nedenfor. De skal være repræsenteret af en 65. karakter.

Base64-polstringstegnet er '='. Det kan naturligvis kun vises i slutningen af ​​kodede data.

Base64 kodningstabel

Værdichar Værdichar Værdichar Værdichar
0EN 16Q 32g 48w
1B 17R 33h 49x
2C 18S 34jeg 50y
3D 19T 35j 51z
4E 20U 36k 520
5F 21V 37l 531
6G 22W 38m 542
7H 23x 39n 553
8jeg 24Y 40o 564
9J 25Z 41p 575
10K 26-en 42q 586
11L 27b 43r 597
12M 28c 44s 608
13N 29d 45t 619
14O 30e 46u 62+
15P 31f 47v 63/