Kuidas Base64 kodeering toimib

Kui internet on teabevõrk, siis e-posti tee on kitsas nõlv. Ainult väikesed vankrid võivad minna.

E-posti transpordisüsteem on loodud ainult tavaliseks ASCII-tekstiks. Teiste keelte või meelevaldsete failide teksti saatmise proovimine on nagu veo läbimine oru kaudu.

Kuidas Big Truck läheb läbi Ravine?

Siis kuidas saadate suurt veoauto läbi väikese veega? Te peate selle ühelt poolt tükkideks võtma, veetama tükid läbi oru ja üles ehitama veoauto teise otsa tükkidest.

Sama juhtub, kui saadate manusfaili e-posti teel . Binaarandmete kodeerimisel tuntud protsessina muudetakse ASCII-tekstiks, mida saab ilma probleemideta e-kirjaga transportida. Saaja lõpus dekodeeritakse andmed ja algne fail taastatakse.

Üks suvaliste andmete kodeerimise meetod kui tavaline ASCII tekst on Base64. See on üks meetodeid, mida kasutatakse MIME standardis, et saata muid andmeid kui tavaline tekst .

Base64 päästmiseks

Base64-i kodeering võtab kolm baiti, millest igaüks koosneb kaheksast bittist, ja esitab need neli printimistähte ASCII standardis. See toimub põhimõtteliselt kahes etapis.

Esimene samm on kolme baiti teisendamine nelja kuue bitiarvuga. Iga ASCII-standardi tähemärk koosneb seitsmest bittist. Base64 kasutab ainult 6 bitti (vastab 2 ^ 6 = 64 tähemärki), et tagada kodeeritud andmete printimine ja lugemine inimesega. ASCII-st saadaval olevaid erimärke ei kasutata.

64 tähemärki (seega nimi Base64) on 10 numbrit, 26 väiketähist, 26 suurt tähemärki ning ka "+" ja "/".

Kui näiteks kolm baiti on 155, 162 ja 233, vastab vastav (ja hirmutav) bitivoog 100110111010001011101001, mis omakorda vastab 6-bitisetele väärtustele 38, 58, 11 ja 41.

Need numbrid teisendatakse ASCII tähemärkideks, kasutades Base64 kodeerimistabelit. Meie näite 6-bitised väärtused tõlgivad ASCII järjestusele "m6Lp".

Seda kaheastmelist protsessi rakendatakse kogu kodeeritud baitide järjestuses. Et tagada kodeeritud andmete õiget trükkimist ja see ei ületa ühtegi e-posti serveri rea pikkusepiirangut, sisestatakse uut tähemärki, et säilitada joonte pikkused alla 76 tähemärki. Uued tähemärgid on kodeeritud nagu kõik muud andmed.

Endgame'i lahendamine

Kodeerimisprotsessi lõpus võib tekkida probleem. Kui algsete andmete suurus baitides on kolm korda suurem, toimib kõik hästi. Kui see pole nii, võib lõpuks olla üks või kaks 8-bitist baiti. Nõuetekohase kodeerimise jaoks on meil vaja täpselt kolm baiti.

Lahenduseks on 3-baidise grupi loomiseks lisada piisavalt baite väärtusega "0". Kaks sellist väärtust on lisatud, kui meil on üks täiendav bait, üks lisab kahte täiendavat baiti.

Loomulikult ei saa neid kunstlikke trailinguid '0-sid kodeerida alljärgnevas kodeerimistabelis. Neid peab esindama 65. märk.

Base64 sümbol on '='. Loomulikult võib see kodeeritud andmete lõppedes ilmuda ainult siis.

Base64 kodeerimistabel

Väärtus Char Väärtus Char Väärtus Char Väärtus 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 Ma 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 /