Skip to main content

Kako funkcionira kodiranje baze podataka

Praktično Kodiranje i Programiranje - 18.01.2018 - WPK (Travanj 2025)

Praktično Kodiranje i Programiranje - 18.01.2018 - WPK (Travanj 2025)
Anonim

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".

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

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