Kā darbojas Base64 kodēšana

Ja internets ir informācijas ceļš, tad e-pasta ceļš ir šaurs grava. Var pāriet tikai ļoti mazi ratiņi.

E-pasta transporta sistēma ir paredzēta tikai vienkāršai ASCII tekstu. Centieni nosūtīt tekstu citās valodās vai patvaļīgi faili ir tādi kā kravas automašīnas paņemšana pa gravu.

Kā Big Truck iet cauri Ravine?

Tad kā jūs sūtat lielu kravas automašīnu caur mazu gravu? No vienas puses to jāpārnes gabalos, transportējiet gabalus caur gravu un pārbūvējiet kravas mašīnu no otra gala.

Tas pats notiek, ja nosūta faila pielikumu pa e-pastu . Procesā, kas pazīstams kā kodēšana, bināros datus pārveido par ASCII tekstu, kuru var transportēt pa e-pastu bez problēmām. Saņēmēja beigās dati tiek dekodēti un sākotnējais fails tiek pārbūvēts.

Viena patvaļīgu datu kodēšanas metode kā vienkāršs ASCII teksts ir Base64. Tas ir viens no paņēmieniem, ko izmanto MIME standarts, lai nosūtītu datus, kas nav vienkāršs teksts .

Base64 uz glābšanu

Base64 kodējums aizņem trīs bitus, katrs sastāv no astoņiem bitiem, un attēlo tos kā četras izdrukājamas rakstzīmes ASCII standartā. Tas notiek pēc būtības divos posmos.

Pirmais solis ir pārvērst trīs bitus uz četriem sešiem bitiem. Katrs ASCII standarta raksturs sastāv no septiņiem bitiem. Base64 izmanto tikai 6 bitus (kas atbilst 2 ^ 6 = 64 rakstzīmes), lai nodrošinātu, ka kodēti dati ir izdrukājami un cilvēcīgi lasāmi. Nevienā no īpašajām rakstzīmēm, kas pieejamas ASCII formātā, neizmanto.

64 rakstzīmes (tātad nosaukums Base64) ir 10 cipari, 26 mazie rakstzīmes, 26 lielie burti, kā arī "+" un "/".

Ja, piemēram, trīs baiti ir 155, 162 un 233, atbilstošā (un biedējošā) bitu plūsma ir 100110111010001011101001, kas savukārt atbilst 6 bitu vērtībām 38, 58, 11 un 41.

Otrajā solī šie skaitļi tiek pārvērsti par ASCII rakstzīmēm, izmantojot Base64 kodēšanas tabulu. Mūsu piemēra 6 bitu vērtības pārveido ASCII secību "m6Lp".

Šis divpakāpju process tiek piemērots visai kodēto baitu secībai. Lai nodrošinātu, ka kodētos datus var pareizi drukāt un tas nepārsniedz nevienu pasta servera līnijas garuma ierobežojumu, jaunās rakstzīmes tiek ievietotas, lai līniju garumi nepārsniegtu 76 rakstzīmes. Jaunas līnijas rakstzīmes tiek kodētas tāpat kā citi dati.

Endgame risināšana

Kodēšanas procesa beigās var rasties problēma. Ja sākotnējo datu izmērs baitos ir trīs reizes, viss darbojas labi. Ja tā nav, mēs varam nonākt ar vienu vai diviem 8 bitu baitiem. Lai pareizi kodētu, mums tomēr vajadzīgi tieši trīs baiti.

Risinājums ir pievienot pietiekami daudz baitus ar vērtību "0", lai izveidotu 3 baitu grupu. Divas šādas vērtības tiek pievienotas, ja mums ir viens papildu baits no datiem, viens ir pievienots diviem papildu baitu datiem.

Protams, šīs mākslīgās pēdas "0" nevar kodēt, izmantojot zemāk esošo kodēšanas tabulu. Tiem jābūt pārstāvētiem 65. zīmes.

Base64 pointera rakstzīme ir '='. Protams, tas var parādīties tikai kodēto datu beigās.

Base64 kodēšanas tabula

Vērtība Char Vērtība Char Vērtība Char Vērtība 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 Es 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 /