Kako kodiranje Base64 deluje

Če je internet informacijska avtocesta, potem je pot za e-pošto ozka grapa. Lahko se zgodi le zelo majhen voziček.

Transportni sistem e-pošte je zasnovan samo za navadno besedilo ASCII. Poskus pošiljanja besedila v druge jezike ali poljubnih datotek je kot na primer tovornjaka po grebenu.

Kako velik tovornjak gre skozi reko?

Potem, kako pošljete velik tovornjak skozi majhno grebenico? Na enem koncu ga morate odpeljati na koščke, prevažati koščke skozi grap, in ponovno sestaviti tovornjak iz kosov na drugem koncu.

Enako se zgodi, ko pošljete prilogo datoteke prek e-pošte . V procesu, ki se imenuje kodiranje binarnih podatkov, se preoblikuje v besedilo ASCII, ki ga je mogoče brez težav prenesti v e-pošto. Na prejemnikovem koncu se podatki dekodirajo in izvorna datoteka je obnovljena.

Ena metoda kodiranja poljubnih podatkov kot navadnega besedila ASCII je Base64. To je ena izmed tehnik, ki jih MIME standard uporablja za pošiljanje podatkov, ki niso navaden .

Base64 v Rescue

Kodiranje Base64 traja tri bajte, od katerih vsaka vsebuje osem bitov in jih predstavlja kot štiri znake za tiskanje v ASCII standardu. To počne v bistvu v dveh korakih.

Prvi korak je pretvorba treh bajtov v štiri številke šestih bitov. Vsak znak v ASCII standardu je sestavljen iz sedmih bitov. Base64 uporablja samo 6 bitov (kar ustreza 2 ^ 6 = 64 znaki), da se zagotovi kodirni podatki, ki jih je mogoče tiskati in jih je mogoče beriti. Noben od posebnih znakov, ki so na voljo v ASCII, se ne uporabljajo.

64 znakov (torej ime Base64) sta 10 števk, 26 malih črk, 26 velikih črk, pa tudi '+' in '/'.

Če so na primer trije bajti 155, 162 in 233, je ustrezni (in zastrašujoči) bitni tok 100110111010001011101001, kar pa ustreza 6-bitnim vrednostim 38, 58, 11 in 41.

Te številke se pretvorijo v znake ASCII v drugem koraku s tabelo kodiranja Base64. 6-bitne vrednosti našega primera prevedejo v ASCII zaporedje "m6Lp".

Ta dvostopenjski postopek se uporablja za celotno zaporedje kodiranih kodov. Če želite zagotoviti, da so kodirani podatki pravilno natisnjeni in da ne presegajo omejitve dolžine linij poštnega strežnika, se vnesejo nove črke, da se dolžina črt pod 76 znaki. Znaki nove črte so kodirani kot vsi drugi podatki.

Reševanje končnega imena

Na koncu postopka kodiranja lahko naletimo na težavo. Če je velikost originalnih podatkov v bajtih trikrat več, je vse v redu. Če ni, bomo morda končali z enim ali dvema 8-bitnima bajtoma. Vendar za pravilno kodiranje potrebujemo natančno tri bajte.

Rešitev je, da dodate dovolj bajtov z vrednostjo '0', da ustvarite 3-bajtno skupino. Dve taki vrednosti dodamo, če imamo en dodaten bajt podatkov, ena je dodana za dva dodatna bajta.

Seveda teh umetnih sledov "0" ne moremo kodirati z uporabo tabele kodiranja spodaj. Morajo jih predstavljati 65. znak.

Znak za oblazinjenje Base64 je '='. Seveda se lahko na koncu kodiranih podatkov le kdaj pojavijo.

Base64 Encoding Tabela

Vrednost Char Vrednost Char Vrednost Char Vrednost Char
0 A 16 Q 32 g 48 w
1 B 17 R 33 h 49 x
2 C 18 S 34 jaz 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 jaz 24 Y 40 o 56 4
9 J 25 Z 41 str 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 /