Jinsi ya Kazi ya Kubandika ya Base64

Ikiwa mtandao ni barabara ya habari, basi njia ya barua pepe ni mwamba mwembamba. Mikokoteni tu ndogo sana huweza kupita.

Mfumo wa usafiri wa barua pepe umeundwa kwa maandishi wazi ya ASCII tu. Kujaribu kutuma maandishi kwa lugha zingine au faili za kiholela ni kama kupata lori kupitia mto.

Je, lori kubwa huenda kwa njia ya Ravine?

Kisha unatumaje lori kubwa kupitia konde ndogo? Unazichukua vipande vipande upande mmoja, usafirisha vipande kupitia kamba, na uimarishe lori kutoka vipande kwa upande mwingine.

Hiyo hutokea unapotuma kiambatisho cha faili kupitia barua pepe . Katika mchakato unaojulikana kama encoding data binary ni kubadilishwa kwa asilia ASCII, ambayo inaweza kusafirishwa kwa barua pepe bila matatizo. Juu ya mwisho wa mpokeaji, data ni decoded na faili ya awali inajengwa tena.

Njia moja ya encoding data kiholela kama Nakala wazi ASCII ni Base64. Ni moja ya mbinu zilizoajiriwa na kiwango cha MIME kutuma data zaidi ya maandiko wazi .

Base64 kwa Uokoaji

Kuweka encoding ya Base64 inachukua bytes tatu, kila moja yenye bits nane, na inawakilisha kama wahusika wanne wa kuchapishwa katika kiwango cha ASCII. Inafanya hivyo kwa hatua mbili.

Hatua ya kwanza ni kubadili byte tatu hadi namba nne za bits sita. Kila tabia katika kiwango cha ASCII ina bits saba. Base64 inatumia tu bits 6 (sambamba na 2 ^ 6 = wahusika 64) kuhakikisha data encoded inaweza kuchapishwa na kuonekana kwa kibinadamu. Hakuna wahusika maalum wanaopatikana katika ASCII.

Wahusika 64 (kwa hiyo jina la Base64) ni tarakimu 10, wahusika 26 wa chini, wahusika 26 kubwa na pia '+' na '/'.

Ikiwa kwa mfano, byte tatu ni 155, 162 na 233, mto mkondo unaoambatana (na wa kutisha) ni 100110111010001011101001, ambayo pia inafanana na thamani ya 6-bit 38, 58, 11 na 41.

Nambari hizi zinaongozwa na wahusika wa ASCII katika hatua ya pili kwa kutumia meza ya encoding ya Base64. Maadili ya 6-bit ya mfano wetu yanatafsiri kwa mlolongo wa ASCII "m6Lp".

Mchakato huu wa hatua mbili hutumiwa kwenye mlolongo mzima wa bytes ambazo ziko encoded. Ili kuhakikisha data iliyosajiliwa inaweza kuchapishwa vizuri na haipaswi kikomo cha urefu wa mstari wa barua pepe, wahusika wa mpya huingizwa ili kuweka urefu wa mstari chini ya herufi 76. Wahusika wapya waandishi wa habari wanafichwa kama data nyingine zote.

Kutatua Mwisho

Mwisho wa mchakato wa encoding, tunaweza kuingia tatizo. Ikiwa ukubwa wa data ya awali katika bytes ni nyingi ya tatu, kila kitu hufanya vizuri. Ikiwa sivyo, tunaweza kuishia na byte moja au mbili za bit. Kwa encoding sahihi, tunahitaji totes tatu hasa, hata hivyo.

Suluhisho ni kupanua byte za kutosha kwa thamani ya '0' ili kujenga kikundi cha 3-byte. Maadili hayo mawili yanatumiwa ikiwa tuna data ya ziada ya ziada, moja hutumiwa kwa bytes mbili za ziada.

Bila shaka, kufuatilia haya ya bandia '0 haiwezi kuingizwa kwa kutumia meza ya encoding hapa chini. Inapaswa kusimamishwa na tabia ya 65.

Tabia ya padding ya Base64 ni '='. Kwa kawaida, inaweza tu kuonekana wakati wa mwisho wa data encoded.

Jedwali la Hesabu ya Base64

Thamani Char Thamani Char Thamani Char Thamani Char
0 A 16 Swali 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 n 55 3
8 Mimi 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 /