Skip to main content

Ako funguje kódovanie Base64

Anonim

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

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

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

hodnotaspáliť hodnotaspáliť hodnotaspáliť hodnotaspáliť
0 16Q 32g 48w
1B 17R 33hod 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 44s 608
13N 29d 45T 619
14O 30e 46u 62+
15P 31F 47proti 63/