Kako funkcionira kodiranje baze podataka

Ako je internet autocesta informacija, put za e-poštu je uska klisura. Samo vrlo male kolica mogu proći.

Transportni sustav e-pošte osmišljen je samo za običan ASCII tekst. Pokušaj slanja teksta na drugim jezicima ili proizvoljnim datotekama je poput dobivanja kamiona kroz klanac.

Kako veliki kamion ide kroz Ravine?

Kako onda poslati veliki kamion kroz mali klanac? Morate ga složiti na jedan kraj, transportirati komade kroz klanac i obnoviti kamion s komada na drugom kraju.

Isto se događa kada pošaljete privitak s datotekama putem e-pošte . U procesu poznat kao kodiranje binarni podaci se pretvaraju u ASCII tekst, koji se može bez problema premjestiti u e-poštu. Na kraju primatelja, podaci se dekodiraju i izvorna se datoteka ponovno obnavlja.

Jedna metoda kodiranja proizvoljnih podataka kao običnog ASCII teksta je Base64. To je jedna od tehnika koje koristi MIME standard za slanje podataka koji nisu obični tekst .

Base64 u spašavanje

Base64 kodiranje traje tri bajta, od kojih svaka se sastoji od osam bitova i predstavlja ih kao četiri znaka za ispis u ASCII standardu. Učiniti to u bitno dva koraka.

Prvi je korak pretvaranje tri bajta u četiri brojeva od šest bitova. Svaki znak u ASCII standardu sastoji se od sedam bita. Base64 koristi samo 6 bita (odgovara 2 ^ 6 = 64 znakova) kako bi se osiguralo da se kodirani podaci mogu ispisivati ​​i ljudski čitati. Nijedan od posebnih znakova dostupnih u ASCII-u se ne koristi.

64 znaka (stoga naziv Base64) ima 10 znamenki, 26 malih slova, 26 velikih slova, kao i '+' i '/'.

Ako su, na primjer, tri bajta 155, 162 i 233, odgovarajući (i zastrašujući) bitni tok je 100110111010001011101001, što zauzvrat odgovara 6-bitnim vrijednostima 38, 58, 11 i 41.

Ti se brojevi pretvaraju u ASCII znakove u drugom koraku pomoću baze podataka Encoding table Base64. 6-bitne vrijednosti našeg primjera prevode se u ASCII sekvencu "m6Lp".

Ovaj proces u dva koraka primjenjuje se na cijeli niz bajtova koji su kodirani. Kako bi se osiguralo pravilno ispisivanje kodiranih podataka i ne prelazi granicu duljine linije poslužitelja e-pošte, umetnuti su novi redovi kako bi duljine linija mogle biti ispod 76 znakova. Novi redovi su kodirani kao i svi ostali podaci.

Rješavanje završne igre

Na kraju procesa kodiranja mogli bismo riješiti problem. Ako je veličina izvornih podataka u bajtovima višekratnik od tri, sve je u redu. Ako nije, možemo završiti s jednim ili dva 8-bitnih bajtova. Za pravilno kodiranje, međutim, trebamo točno tri bajta.

Rješenje je dodavanje dovoljno bajtova s ​​vrijednošću "0" za stvaranje skupine od 3 bajta. Priložene su dvije takve vrijednosti ako imamo jedan dodatni bajt podataka, jedan je dodan za dva dodatna bajtova.

Naravno, ove umjetne prateće oznake 0 ne mogu se kodirati pomoću tablice kodiranja u nastavku. Oni moraju biti zastupljeni 65. znakom.

Font podloge Base64 je '='. Naravno, može se pojaviti samo na kraju kodiranih podataka.

Tablica za kodiranje Base64

Vrijednost čađ Vrijednost čađ Vrijednost čađ Vrijednost čađ
0 16 P 32 g 48 w
1 B 17 R 33 h 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 a 60 8
13 N 29 d 45 t 61 9
14 O 30 e 46 u 62 +
15 P 31 f 47 v 63 /