Ինչպես Base64 կոդավորումը աշխատում է

Եթե ​​ինտերնետը տեղեկատվական մայրուղին է, ապա էլփոստի ուղին նեղ կիրճ է: Միայն շատ փոքր սայլեր կարող են անցնել:

Էլեկտրոնային փոստի տրանսպորտային համակարգը նախատեսված է միայն ASCII տեքստի համար: Փորձելով տեքստը ուղարկել այլ լեզուներով կամ կամայական ֆայլերի նման է բեռնատար ստանալու ձոր.

Ինչպես է մեծ բեռնատարը շրջվում Ravine- ի միջոցով:

Այնուհետեւ, ինչպես եք մի մեծ բեռնատար մի փոքր ցեխի միջոցով: Դուք պետք է վերցնեք այն մի կտորով, կտորներ տեղափոխեք կիրճով եւ վերակառուցեք բեռնատարը մյուս մասի կտորներից:

Նույնը տեղի է ունենում, երբ էլփոստով կցեք ֆայլի հավելված : Երկուական տվյալների կոդավորումով հայտնի գործընթացում վերափոխվում է ASCII տեքստը, որը կարող է տեղափոխվել առանց էլեկտրոնային փոստով: Ստացողի վերջում տվյալները վերծանվում են եւ սկզբնական ֆայլը վերակառուցվում է:

Բացառիկ տվյալների կոդավորման մեկ եղանակ, որպես պարզ ASCII տեքստ, Base64 է: Այն MIME ստանդարտի կողմից կիրառված մեթոդներից մեկն է `ուղարկելու համար այլ տվյալներ, քան պարզ տեքստը :

Base64- ը փրկարարին

Base64 կոդավորումը տեւում է երեք բայթ, որոնցից յուրաքանչյուրը բաղկացած է ութ բիթից եւ ներկայացնում է դրանք որպես տպագիր բնույթի 4 նիշ ASCII ստանդարտում: Դա դա էականորեն երկու քայլ է:

Առաջին քայլը փոխել է երեք բայթը չորս թվով վեց բիթ: ASCII ստանդարտի յուրաքանչյուր բնույթը բաղկացած է յոթ բիթից: Base64- ը միայն 6 բիթ է օգտագործում (համապատասխան 2 ^ 6 = 64 նիշ), որպեսզի կոդավորված տվյալները տպագրվեն եւ մարդկայինորեն ընթանան: ASCII- ում առկա հատուկ նշաններից ոչ մեկը չի օգտագործվում:

64 նիշ (այսինքն Base64 անունը) 10 նիշ է, 26 փոքրատառ նիշ, 26 մեծ տառատեսակ, ինչպես նաեւ '+' եւ '/':

Եթե, օրինակ, երեք բայդը 155, 162 եւ 233 է, համապատասխան (եւ վախեցնող) բիտի հոսքը 100110111010001011101001 է, որն իր հերթին համապատասխանում է 6-բիթանոց արժեքներին 38, 58, 11 եւ 41:

Այս թվերը փոխարկվում են ASCII նիշերի երկրորդ քայլին, օգտագործելով Base64 կոդավորման աղյուսակը: Մեր օրինակի 6-բիթանոց արժեքները թարգմանվում են ASCII հաջորդականության «m6Lp»:

Այս երկաստիճան գործընթացը կիրառվում է կոդավորված բայթի ամբողջ հաջորդականության վրա: Կոդավորված տվյալների ապահովման համար կարող է պատշաճ կերպով տպագրվել եւ չի գերազանցում որեւէ փոստի սերվերի գծի երկարության սահմանաչափը, նոր գծի նիշերը տեղադրվում են տողերի երկարությունը 76 նիշից ցածր պահելու համար: Նոր գծի նիշերը կոդավորված են, ինչպես բոլոր այլ տվյալները:

Լուծել Endgame- ը

Կոդավորման գործընթացի վերջում մենք կարող ենք խնդիր առաջանալ: Եթե ​​սկզբնական տվյալների չափը բայթում է երեքի բազմապատիկ, ամեն ինչ լավ է: Եթե ​​դա չլինի, մենք կարող ենք ավարտել մեկ կամ երկու 8 բիթանոց բայթ: Համապատասխան կոդավորման համար մեզ անհրաժեշտ է երեք բայթ:

Խնդիրն այն է, ավելացնել '0' արժեք ունեցող բավարար բայթ, 3 բայթ խումբ ստեղծելու համար: Երկու նման արժեքներ ավելացվում են, եթե մենք ունենք մեկ լրացուցիչ բայտ տվյալներ, մեկը ավելացված է երկու լրացուցիչ բայթերի համար:

Իհարկե, այս արհեստական ​​արգելակումը չի կարող կոդավորվել ստորեւ բերված կոդերի աղյուսակով: Նրանք պետք է ներկայացվեն 65-րդ բնույթով:

Base64- ի լրտեսման բնույթը '=' է: Բնականաբար, այն կարող է միայն երբեւէ հայտնվել կոդավորված տվյալների վերջում:

Base64 կոդավորման աղյուսակ

Արժեքը Char Արժեքը Char Արժեքը Char Արժեքը Char
0 Ա 16 Գ 32 գ 48 w
1 Բ 17 Ռ 33 h 49 x
2 C 18 Ս 34 i 50 y
3 Դ 19 Տ 35 ժ 51 z
4 Ե 20 U 36 k 52 0
5 Ֆ 21 Վ 37 լ 53 1
6 Գ 22 Վ 38 մ 54 2
7 Հ 23 X 39 n 55 3
8 Ես 24 Յ 40 o 56 4
9 Ջ 25 Զ 41 p 57 5
10 Կ 26 ա 42 q 58 6
11 Լ 27 բ 43 r 59 7
12 Մ 28 գ 44 բ 60 8
13 Ն 29 դ 45 տ 61 9
14 O 30 ե 46 u 62 +
15 Պ 31 f 47 v 63 /