Giunsa Pagtrabaho ang Base64 Encoding

Kung ang internet mao ang information highway, nan ang dalan alang sa email usa ka pig-ot nga lugot. Gamay ra kaayo nga mga karomata ang makaagi.

Ang sistema sa transportasyon sa email gihimo lamang alang sa yano nga teksto sa ASCII. Ang pagsulay sa pagpadala sa teksto sa laing mga pinulongan o mga arbitraryong mga file sama sa pagkuha og usa ka trak latas sa lugot.

Giunsa Paglabay sa Big Truck Pinaagi sa Bato?

Unya unsaon nimo pagpadala ang usa ka dakong trak latas sa usa ka gamayng lugot? Kinahanglan nimo kini dad-on sa usa ka tumoy, dad-on ang mga piraso agi sa lugot, ug tukoron pag-usab ang trak gikan sa mga piraso sa pikas tumoy.

Ang sama nga mahitabo kon magpadala ka og file attachment pinaagi sa email . Sa usa ka proseso nga gitawag nga pag-encode sa binary nga data giusab ngadto sa ASCII nga teksto, nga mahimong ma-transport sa email nga walay problema. Sa katapusan sa tigdawat, ang datos mabasa ug ang orihinal nga file gitukod pag-usab.

Usa ka pamaagi sa pag-encode sa arbitraryong datos isip yano nga ASCII nga teksto mao ang Base64. Usa kini sa mga pamaagi nga gigamit sa pamantalaan sa MIME sa pagpadala sa datos gawas sa yano nga teksto .

Base64 sa Pagluwas

Ang pag-encode sa Base64 nagkinahanglan og tulo ka mga byte, nga ang matag usa adunay walo ka piraso, ug nagrepresenta niini isip upat ka mga karakter nga maimprinta sa ASCII standard. Gihimo kana sa duha ka paagi.

Ang unang lakang mao ang pag-convert sa tulo ka mga byte ngadto sa upat ka numero nga unom ka piraso. Ang matag karakter sa ASCII standard naglangkob sa pito ka piraso. Ang Base64 naggamit lamang og 6 bits (katumbas sa 2 ^ 6 = 64 ka mga karakter) aron maseguro nga ang kasayuran nga kasudlan maprinta ug mabasa sa tawo. Walay usa sa mga espesyal nga karakter nga anaa sa ASCII ang gigamit.

Ang 64 ka karakter (busa ang ngalan nga Base64) adunay 10 ka numero, 26 ka letra nga mga letra, 26 ka dagkong mga karakter ingon man '+' ug '/'.

Kon pananglitan, ang tulo ka mga ba-ba mao ang 155, 162 ug 233, ang katumbas (ug makahahadlok nga) bit stream mao ang 100110111010001011101001, nga susama sa 6-bit nga mga kantidad nga 38, 58, 11 ug 41.

Kini nga mga numero gi-convert ngadto sa mga karakter sa ASCII sa ikaduhang lakang gamit ang Base64 encoding table. Ang 6-bit nga mga mithi sa atong panig-ingnan maghubad sa ASCII nga han-ay nga "m6Lp".

Kini nga proseso sa duha ka lakang gipadapat ngadto sa tibuok han-ay nga mga bytes nga gi-encode. Aron maseguro nga ang naka-encode nga datos mahimong maimprinta sa tukmang paagi ug dili molapas sa limit sa gitas-on sa linya sa mail server, ang mga bag-ong linya sa mga karakter gisal-ot aron sa pagpadayon sa linya sa gitas-on ubos sa 76 ka mga karakter. Ang mga bag-ong linya sa mga karakter girekord sama sa ubang mga datos.

Pagsulbad sa Endgame

Sa katapusan sa proseso sa pag-encode, mahimo kita nga problema. Kung ang gidak-on sa orihinal nga datos sa bytes usa ka multiple sa tulo, ang tanan maayo. Kung dili, mahimo kita ma-endapan sa usa o duha nga 8-bit bytes. Alang sa husto nga pag-encode, gikinahanglan gayud nato ang tulo ka byte, bisan pa niana.

Ang solusyon mao ang pagdugang sa igo nga mga byte nga adunay usa ka kantidad nga '0' aron sa paghimo sa usa ka 3-byte nga grupo. Duha sa ingon nga mga bili ang gidugang kon adunay usa ka dugang dugang nga datos, ang usa gibutang alang sa duha ka dugang nga bytes.

Siyempre, kini nga mga artipisyal nga trailing '0's dili ma-encode gamit ang encoding table sa ubos. Sila kinahanglan nga girepresentahan sa ika-65 nga kinaiya.

Ang Base64 padding nga karakter mao ang '='. Siyempre, kini mahimo lamang nga makita sa katapusan sa gi-encode nga datos.

Base64 Encoding Table

Bili Char Bili Char Bili Char Bili 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 n 55 3
8 Ako 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 /