Ako funguje kódovanie Base64

Obsah:

Ako funguje kódovanie Base64
Ako funguje kódovanie Base64
Anonim

Kódovanie Base64 je proces prevodu binárnych údajov do formátu reťazca ASCII prevodom týchto binárnych údajov na 6-bitovú znakovú reprezentáciu. Metóda kódovania Base64 sa používa, keď sa binárne údaje, ako sú obrázky alebo video, prenášajú cez systémy, ktoré sú navrhnuté na prenos údajov vo formáte čistého textu (ASCII).

Prečo sa používa kódovanie Base64?

Potreba kódovania Base64 pochádza z problémov, ktoré sa vyskytujú pri prenose médií v surovom binárnom formáte do textových systémov.

Keďže textové systémy (napríklad e-mail) interpretujú binárne údaje ako širokú škálu znakov vrátane špeciálnych príkazových znakov, mnohé z binárnych údajov, ktoré sa prenášajú na prenosové médiá, tieto systémy nesprávne interpretujú a stratia alebo poškodia proces prenosu.

Image
Image

Jednou metódou kódovania tohto druhu binárnych údajov spôsobom, ktorý zabraňuje takýmto problémom s prenosom, je poslať ich ako obyčajný text ASCII v kódovanom formáte Base64. Toto je jedna z techník používaných štandardom MIME na odosielanie údajov iných ako obyčajný text.

Mnoho programovacích jazykov, ako napríklad PHP a Javascript, obsahuje funkcie kódovania a dekódovania Base64 na interpretáciu údajov prenášaných pomocou kódovania Base64.

Logika kódovania Base64

Kódovanie Base64 rozdeľuje binárne dáta na 6-bitové segmenty po 3 celých bajtoch a reprezentuje ich ako tlačiteľné znaky v štandarde ASCII. Robí to v podstate v dvoch krokoch.

Prvým krokom je rozdelenie binárneho reťazca na 6-bitové bloky. Base64 používa iba 6 bitov (čo zodpovedá 2^6=64 znakom), aby sa zabezpečilo, že zakódované údaje budú vytlačiteľné a čitateľné pre ľudí. Nie sú použité žiadne špeciálne znaky dostupné v ASCII.

64 znakov (odtiaľ názov Base64) je 10 číslic, 26 malých písmen, 26 veľkých písmen, ako aj znamienko plus (+) a lomka (/). Existuje aj 65. znak známy ako pad, čo je znak rovnosti (=). Tento znak sa používa, keď posledný segment binárnych dát neobsahuje celých 6 bitov.

Príklad kódovania Base64

Vezmite si napríklad tri ASCII čísla 155, 162 a 233. Tieto tri čísla tvoria binárny tok 100110111010001011101001. Binárny súbor, podobne ako obrázok, obsahuje binárny tok s desiatkami alebo stovkami tisíc núl a jedničky.

Kodér Base64 začína rozdelením binárneho toku do skupín po šiestich znakoch: 100110 111010 001011 101001. Každé z týchto zoskupení sa prekladá na čísla 38, 58, 11 a 41.

Šesťznakový binárny tok konvertuje medzi binárnymi (alebo so základom-2) na desiatkové (základ-10) znakmi umocnením každej hodnoty reprezentovanej 1 v binárnej sekvencii s jej pozičným štvorcom. Počnúc sprava a smerom doľava a počnúc nulou predstavujú hodnoty v binárnom toku 2^0, potom 2^1, potom 2^2, potom 2^3, potom 2^4, potom 2^5.

Tu je ďalší spôsob, ako sa na to pozrieť. Počnúc zľava, každá pozícia má hodnotu 1, 2, 4, 8, 16 a 32. Ak má binárne číslo v slote 1, pridáte túto hodnotu; ak má v slote 0, vy nie. Binárny reťazec 100110 sa prevedie na desiatkové číslo 38: 02^01 + 12^1 + 12^2 + 02^3 + 02^4 + 12^5=0+2 +4+0+0+32.

Kódovanie Base64 preberá tento binárny reťazec a rozdeľuje ho na 6-bitové hodnoty 38, 58, 11 a 41.

Nakoniec sa tieto čísla skonvertujú na znaky ASCII pomocou tabuľky kódovania Base64. 6-bitové hodnoty tohto príkladu sa prekladajú do sekvencie ASCII m6Lp.

Pomocou konverznej tabuľky Base64:

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

Tento dvojkrokový proces sa aplikuje na celý binárny reťazec, ktorý je zakódovaný.

Aby sa zabezpečilo, že zakódované údaje sa dajú správne vytlačiť a neprekročia limit dĺžky riadkov žiadneho poštového servera, vkladajú sa znaky nového riadku, aby dĺžka riadku nepresahovala 76 znakov. Znaky nového riadku sú zakódované ako všetky ostatné údaje.

Celým účelom kódovania Base64, od pridania výplne na zachovanie 3-bajtových binárnych segmentov až po konverziu binárnych súborov na text pomocou tabuľky Base64, je zachovať integritu prenášaných binárnych informácií.

Base64 kódovacia tabuľka

Nasledujúca tabuľka prekladá všetkých 64 znakov použitých v kódovaní Base64.

Base64 kódovacia tabuľka
Value Char Value Char Value Char Value 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 I 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 /

Solving the Endgame

Na konci procesu kódovania môže nastať problém. Ak je veľkosť pôvodných údajov v bajtoch násobkom troch, všetko funguje dobre. Ak nie, môžu tam byť prázdne bajty. Na správne kódovanie sú potrebné presne 3 bajty binárnych údajov.

Riešením je pripojiť dostatok bajtov s hodnotou 0 na vytvorenie 3-bajtovej skupiny. Dve takéto hodnoty sa pridajú, ak údaje potrebujú jeden bajt údajov navyše, jedna sa pripojí za dva bajty navyše.

Samozrejme, tieto umelé koncové „0“nemožno zakódovať pomocou nižšie uvedenej tabuľky kódovania. Musí ich reprezentovať 65. znak. Výplňový znak Base64 je znak rovnosti (=) a je umiestnený na konci kódovaných údajov.

Odporúča: