Kaip veikia "Base64 Encoding"

Jei internetas yra informacijos greitkelis, tada el. Pašto kelias yra siauras takas. Tik labai maži vežimėliai gali praeiti.

Elektroninio pašto transporto sistema sukurta tik paprastam ASCII tekstui. Bandymas išsiųsti tekstą kitomis kalbomis ar savavališkai yra panašus į tai, kad sunkvežimį važiuoti į kalvą.

Kaip "Big Truck" eina per "Ravine"?

Tada kaip jūs siunčiate didelį sunkvežimį per mažą griovį? Viename gale turite paimti gabalėlius, per gabalus gabenkite per griovį ir perkelkite autokrautuvą iš kito galo.

Tas pats pasitaiko, kai išsiųsite failo priedą el . Paštu . Binarinių duomenų kodavime procesas vadinamas ASCII tekstu, kuris gali būti transportuojamas el. Paštu be problemų. Gavėjo pabaigoje duomenys dekoduojami ir originalus failas yra pertvarkytas.

Vienas būdas koduoti savavališkus duomenis kaip paprastą ASCII tekstą yra Base64. Tai yra vienas iš metodų, naudojamų pagal MIME standartą, norint siųsti duomenis, išskyrus paprastą tekstą .

Base64 prie gelbėjimo

"Base64" kodavimas tris baitus, kurių kiekvienas susideda iš aštuonių bitų, ir nurodo juos kaip keturis spausdintus simbolius ASCII standarte. Tai daro iš esmės dviem etapais.

Pirmasis žingsnis yra paversti tris baitus keturiais šešių bitų skaičiais. Kiekvienas ASCII standarto simbolis susideda iš septynių bitų. "Base64" naudoja tik 6 bitus (atitinka 2 ^ 6 = 64 simbolius), kad užtikrintų, kad užkoduoti duomenys būtų spausdinami ir kad juos būtų lengviau skaityti. Nenaudojamas ASCII specialių simbolių.

64 simboliai (taigi ir pavadinimas Base64) yra 10 skaitmenų, 26 mažos raidės, 26 didieji raidės, taip pat "+" ir "/".

Jei, pavyzdžiui, trys baitai yra 155, 162 ir 233, atitinkamas (ir bauginantis) bitų srautas yra 100110111010001011101001, kuris savo ruožtu atitinka 6 bitų vertes 38, 58, 11 ir 41.

Antrame etape šie skaičiai paverčiami ASCII simboliais naudojant Base64 kodavimo lentelę. 6-bitų mūsų pavyzdyje pateiktos vertes paverčia ASCII sekcija "m6Lp".

Šis dviejų žingsnių procesas taikomas visai koduotų baitų sekai. Siekiant užtikrinti, kad užkoduoti duomenys būtų tinkamai išspausdinti ir neviršytų jokio pašto serverio linijos ilgio, naujos eilutės simboliai yra įterpti, kad linijų ilgis būtų mažesnis nei 76 simboliai. Newline simboliai yra užkoduoti kaip visi kiti duomenys.

Endgame sprendimo sprendimas

Kodavimo proceso pabaigoje gali kilti problema. Jei pradinių duomenų dydis baitais yra tris kartus, viskas gerai veikia. Jei taip nėra, mes galime pasiekti vieną ar du 8-bitų baitų. Norint tinkamai koduoti, mes turime tiksliai tris baitus.

Sprendimas yra pridėti pakankamai baitų, kurių reikšmė yra 0, kad būtų sukurta 3 baitų grupė. Pridedamos dvi tokios vertės, jei mes turime vieną papildomą duomenų baitą, o kitas - du papildomus baitus.

Žinoma, šie dirbtiniai trailing "0" kodai negali būti užkoduoti naudojant žemiau pateiktą kodavimo lentelę. Juose turi būti 65 simbolių.

"Base64" užpildo simbolis yra "=". Žinoma, jis gali pasirodyti tik užkoduotų duomenų pabaigoje.

Base64 kodavimo lentelė

Vertė Char Vertė Char Vertė Char Vertė 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 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 tu 62 +
15 P 31 f 47 v 63 /