Ako funguje kódovanie Base64

Ak je internet informačná diaľnica, cesta k e-mailu je úzka rokle. Iba veľmi malé vozíky môžu prejsť.

Dopravný systém e-mailu je určený len pre text ASCII. Pokúšať sa odosielať text v iných jazykoch alebo v ľubovoľných súboroch je ako získať nákladné auto cez roklinu.

Ako prechádza veľký nákladný automobil cez úžinu?

Tak ako posielate veľký nákladný automobil cez malú roklinu? Musíte to rozdeliť na kusy na jednom konci, prepravovať kusy cez roklinku, a znovu postaviť nákladný automobil z kusov na druhom konci.

To isté sa stane, keď pošlete prílohu súboru e-mailom . V procese známy ako kódovanie binárnych údajov sa transformuje na text ASCII, ktorý je možné bez problémov preniesť do e-mailu. Na konci príjemcu sa dáta dekódujú a pôvodný súbor sa prestaví.

Jedna metóda kódovania ľubovoľných údajov ako obyčajný text ASCII je Base64. Jednou z metód, ktoré používa štandard MIME na odosielanie údajov iných ako obyčajný text .

Base64 na záchranu

Kódovanie Base64 trvá tri bajty, z ktorých každý pozostáva z osem bitov, a predstavuje ich ako štyri tlačiteľné znaky v štandarde ASCII. Robí to v podstate v dvoch krokoch.

Prvým krokom je previesť tri bajty na štyri čísla šiestich bitov. Každý znak v štandarde ASCII pozostáva zo siedmich bitov. Base64 používa iba 6 bitov (zodpovedá 2 ^ 6 = 64 znakov), aby zabezpečil, že zakódované dáta budú tlačiteľné a ľudsky čitateľné. Nie sú použité žiadne špeciálne znaky dostupné v ASCII.

64 znakov (odtiaľ názov Base64) je 10 číslic, 26 malých znakov, 26 veľkých znakov a tiež znaky + a '/'.

Ak sú napríklad tri bajty 155, 162 a 233, zodpovedajúci (a desivý) bitový tok je 100110111010001011101001, čo zase zodpovedá 6-bitovým hodnotám 38, 58, 11 a 41.

Tieto čísla sa v druhom kroku prevedú na znaky ASCII pomocou tabuľky kódovania Base64. 6-bitové hodnoty nášho príkladu sa prekladajú do sekvencie ASCII "m6Lp".

Tento dvojstupňový proces sa aplikuje na celú sekvenciu bajtov, ktoré sú zakódované. Aby ste zabezpečili, že kódované dáta môžu byť správne vytlačené a nepresahujú limit dĺžky linky poštového servera, vložia sa nové znaky, aby sa dĺžky riadkov udržali pod 76 znakmi. Nové znaky sú zakódované ako všetky ostatné údaje.

Riešenie Endgame

Na konci procesu kódovania môžeme naraziť na problém. Ak je veľkosť pôvodných údajov v bajtoch násobkom troch, všetko funguje správne. Ak tomu tak nie je, mohli by sme skončiť s jedným alebo dvoma 8-bitovými bajtami. Pre správne kódovanie potrebujeme presne tri bajty.

Riešením je pripojiť dostatočné bajty s hodnotou '0' na vytvorenie skupiny s 3 bajtami. Dve takéto hodnoty sú pripojené, ak máme jeden extra bajt dát, jeden je pripojený pre dva extra bajty.

Samozrejme, tieto umelé koncové znaky 0 nemožno zakódovať pomocou tabuľky kódovania nižšie. Musia byť zastúpené 65. znakom.

Základný znak Base64 je '='. Prirodzene sa to môže objaviť len na konci zakódovaných údajov.

Tabuľka kódovania Base64

hodnota spáliť hodnota spáliť hodnota spáliť hodnota spáliť
0 16 Q 32 g 48 w
1 B 17 R 33 hod 49 X
2 C 18 S 34 ja 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 ja 24 Y 40 o 56 4
9 J 25 Z 41 p 57 5
10 K 26 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 proti 63 /