Kako deluje kodiranje Base64

Kazalo:

Kako deluje kodiranje Base64
Kako deluje kodiranje Base64
Anonim

Kodiranje Base64 je postopek pretvorbe binarnih podatkov v obliko niza ASCII s pretvorbo teh binarnih podatkov v 6-bitno predstavitev znakov. Metoda kodiranja Base64 se uporablja, ko se binarni podatki, kot so slike ali videoposnetki, prenašajo prek sistemov, ki so zasnovani za prenos podatkov v formatu navadnega besedila (ASCII).

Zakaj se uporablja kodiranje Base64?

Potreba po kodiranju Base64 izhaja iz težav, ki se pojavijo, ko se mediji prenašajo v neobdelani binarni obliki v besedilne sisteme.

Ker sistemi, ki temeljijo na besedilu (kot je elektronska pošta), razlagajo binarne podatke kot široko paleto znakov, vključno s posebnimi ukaznimi znaki, si ti sistemi napačno razlagajo veliko binarnih podatkov, ki se prenašajo mediju za prenos, in jih izgubijo ali poškodujejo postopek prenosa.

Image
Image

Eden od načinov kodiranja te vrste binarnih podatkov na način, ki se izogne takšnim težavam pri prenosu, je pošiljanje kot navadno besedilo ASCII v formatu, kodiranem z Base64. To je ena od tehnik, ki jih uporablja standard MIME za pošiljanje podatkov, ki niso golo besedilo.

Številni programski jeziki, kot sta PHP in Javascript, vključujejo funkcije kodiranja in dekodiranja Base64 za interpretacijo podatkov, poslanih z uporabo kodiranja Base64.

Logika kodiranja Base64

Kodiranje Base64 razdeli binarne podatke na 6-bitne segmente 3 polnih bajtov in jih predstavi kot natisljive znake v standardu ASCII. To naredi v bistvu v dveh korakih.

Prvi korak je razdelitev binarnega niza na 6-bitne bloke. Base64 uporablja samo 6 bitov (kar ustreza 2^6=64 znakom), da zagotovi, da so kodirani podatki natisljivi in berljivi. Noben od posebnih znakov, ki so na voljo v ASCII, ni uporabljen.

64 znakov (od tod tudi ime Base64) je 10 števk, 26 malih črk, 26 velikih črk ter znak plus (+) in poševnica (/). Obstaja tudi 65. znak, znan kot ploščica, ki je znak enačaja (=). Ta znak se uporablja, ko zadnji segment binarnih podatkov ne vsebuje celih 6 bitov.

Primer kodiranja Base64

Na primer, vzemite tri številke ASCII 155, 162 in 233. Te tri številke sestavljajo binarni tok 100110111010001011101001. Binarna datoteka, tako kot slika, vsebuje binarni tok, ki teče na desetine ali stotisoče ničel in enice.

Kodirnik Base64 se začne z razdelitvijo binarnega toka v skupine šestih znakov: 100110 111010 001011 101001. Vsaka od teh skupin se prevede v številke 38, 58, 11 in 41.

Šestmestni binarni tok pretvarja binarne znake (ali z osnovo 2) v decimalne znake (z osnovo 10) s kvadriranjem vsake vrednosti, ki jo v binarnem zaporedju predstavlja 1, z njenim položajnim kvadratom. Začenši z desne in levo ter začenši z ničlo, vrednosti v binarnem toku predstavljajo 2^0, nato 2^1, nato 2^2, nato 2^3, nato 2^4, nato 2^5.

Tukaj je še en pogled na to. Začenši z leve je vsak položaj vreden 1, 2, 4, 8, 16 in 32. Če ima binarno število 1 v reži, dodate to vrednost; če ima 0 v reži, ga nimate. Binarni niz 100110 se pretvori v decimalno število 38: 02^01 + 12^1 + 12^2 + 02^3 + 02^4 + 12^5=0+2 +4+0+0+32.

Kodiranje Base64 vzame ta binarni niz in ga razdeli na 6-bitne vrednosti 38, 58, 11 in 41.

Nazadnje se te številke pretvorijo v znake ASCII z uporabo tabele kodiranja Base64. 6-bitne vrednosti tega primera se prevedejo v zaporedje ASCII m6Lp.

Uporaba pretvorbene tabele Base64:

  • 38 je m
  • 58 je 6
  • 11 je L
  • 41 je p

Ta postopek v dveh korakih se uporabi za celoten binarni niz, ki je kodiran.

Za zagotovitev, da se kodirani podatki lahko pravilno natisnejo in ne presežejo omejitve dolžine vrstice katerega koli poštnega strežnika, so vstavljeni znaki za novo vrstico, da ohranimo dolžino vrstice pod 76 znaki. Znaki za novo vrstico so kodirani kot vsi drugi podatki.

Celoten namen kodiranja Base64, od dodajanja oblazinjenja za ohranitev 3-bajtnih binarnih segmentov do pretvorbe binarnih v besedilo z uporabo tabele Base64, je ohraniti celovitost prenesenih binarnih informacij.

Tabela kodiranja Base64

Naslednja tabela prevaja vseh 64 znakov, uporabljenih v kodiranju Base64.

Tabela kodiranja Base64
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 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 jaz 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 /

Reševanje končne igre

Na koncu postopka kodiranja lahko pride do težave. Če je velikost izvirnih podatkov v bajtih večkratnik tri, vse deluje v redu. Če ni, so morda prazni bajti. Za pravilno kodiranje so potrebni točno 3-bajti binarnih podatkov.

Rešitev je, da dodate dovolj bajtov z vrednostjo 0, da ustvarite 3-bajtno skupino. Dve takšni vrednosti sta dodani, če podatki potrebujejo en dodaten bajt podatkov, ena pa je dodana za dva dodatna bajta.

Seveda teh umetnih končnih '0' ni mogoče kodirati s pomočjo spodnje tabele kodiranja. Predstavljeni morajo biti s 65. znakom. Zapolnitveni znak Base64 je znak enačaja (=) in je postavljen na konec kodiranih podatkov.

Priporočena: