Kiel Base64 Encoding Works

Se interreto estas la informa aŭtovojo, tiam la vojo por retpoŝto estas mallarĝa monteto. Nur tre malgrandaj ĉaroj povas pasi.

La transporta sistemo de retpoŝto estas desegnita nur por klara ASCII-teksto. Provante sendi tekston en aliaj lingvoj aŭ arbitraj dosieroj estas kiel akiri kamion tra la monteto.

Kiel la Granda Kamiono iras tra la Barranca?

Tiam kiel vi sendas grandan kamion tra malgranda monteto? Vi devas peki ĝin sur la unu fino, transporti la pecojn tra la ĉirkaŭaĵo, kaj rekonstrui la kamionon de la pecoj sur la alia fino.

Lin sama okazas kiam vi sendas dosieron-ligilon per retpoŝto . En procezo konata kiel kodigo la binara datumo transformiĝas al ASCII-teksto, kiu povas esti transportita per retpoŝto sen problemoj. En la fino de la ricevilo, la datumoj estas decoditaj kaj la originala dosiero estas rekonstruita.

Unu metodo por kodi arbitrajn datumojn kiel klara ASCII-teksto estas Bazo64. Ĝi estas unu el la teknikoj uzitaj de la MIME-normo por sendi informojn krom klara teksto .

Bazo64 al la Savo

Bazo64-kodado prenas tri bitojn, ĉiu konsistantan el ok bitoj, kaj reprezentas ilin kiel kvar printablan karakteron en la norma ASCII. Ĝi faras tion en esence du paŝoj.

La unua paŝo estas konverti tri bytes al kvar nombroj da ses bitoj. Ĉiu karaktero en la norma ASCII konsistas el sep bitoj. Bazo64 nur uzas 6 bitojn (korespondanta al 2 ^ 6 = 64 karakteroj) por certigi koditajn datumojn por esti printablaj kaj humane legeblaj. Neniu el la specialaj signoj disponeblaj en ASCII estas uzataj.

La 64 karakteroj (de tie la nomo Bazo64) estas 10 ciferoj, 26 minusklaj signoj, 26 supraj signoj, krom "+" kaj "/".

Se ekzemple la tri bajtoj estas 155, 162 kaj 233, la responda (kaj timiga) bito-fluo estas 100110111010001011101001, kiu siavice respondas al la 6-bitaj valoroj 38, 58, 11 kaj 41.

Ĉi tiuj nombroj estas konvertitaj al ASCII-karakteroj en la dua paŝo per la bazo de kodigo de Base64. La 6-bitaj valoroj de nia ekzemplo tradukiĝas al la ASCII sekvenco "m6Lp".

Ĉi tiu du-paza procezo aplikiĝas al la tuta sekvenco de bajtoj, kiuj estas koditaj. Por certigi, ke la koditaj datumoj estu konvene presitaj kaj ne superas la limigitan limon de iu ajn retpoŝta servilo, novaj lineoj estas enmetitaj por konservi longajn liniojn sub 76 karakteroj. La nova linio estas kodita kiel ĉiuj aliaj datumoj.

Solvanta la Endgame

Je la fino de la kodiga procezo, ni povus eniri en problemon. Se la grandeco de la originalaj datumoj en bajtoj estas multobla de tri, ĉio funkcias bone. Se ĝi ne okazas, ni eble finiĝos per unu aŭ du 8 bitoj de bajtoj. Por taŭga kodado, ni devas precize tri bajtoj.

La solvo estas aldoni sufiĉe da bajtoj kun valoro de '0' por krei grupon de 3-bytoj. Du tiaj valoroj estas aldonitaj se ni havas unu kroman bajton de datumoj, unu estas aldonita por du kromaj bajtoj.

Kompreneble, ĉi tiuj artefaritaj spuroj '0's ne povas esti koditaj uzante la kodan tablon sube. Ili devas esti reprezentitaj de 65-a karaktero.

La baza karaktero de Base64 estas '='. Nature, ĝi nur povas aperi ĉe la fino de koditaj datumoj.

Bazo64 Encoding Tablo

Valoro Char Valoro Char Valoro Char Valoro Char
0 A 16 Q 32 g 48 w
1 B 17 R 33 h 49 x
2 C 18 S 34 i 50 kaj
3 D 19 T 35 j 51 z
4 Kaj 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 10a 39 n 55 3
8 Mi 24 Kaj 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 Ho 30 kaj 46 u 62 +
15 P 31 f 47 v 63 / /