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

Բովանդակություն:

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

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

Ինչու է օգտագործվում Base64 կոդավորումը:

Base64 կոդավորման անհրաժեշտությունը ծագում է այն խնդիրներից, որոնք առաջանում են, երբ լրատվամիջոցները հումքի երկուական ձևաչափով փոխանցվում են տեքստի վրա հիմնված համակարգեր:

Քանի որ տեքստի վրա հիմնված համակարգերը (ինչպես էլփոստը) երկուական տվյալները մեկնաբանում են որպես նիշերի լայն շրջանակ, ներառյալ հատուկ հրամանի նիշերը, երկուական տվյալների մեծ մասը, որոնք փոխանցվում են փոխանցման լրատվամիջոցներին, սխալ են մեկնաբանվում այդ համակարգերի կողմից և կորչում կամ փչանում են: փոխանցման գործընթացը։

Image
Image

Այս տեսակի երկուական տվյալների կոդավորման եղանակներից մեկը, որը խուսափում է փոխանցման նման խնդիրներից, այն ուղարկելն է որպես պարզ ASCII տեքստ Base64 կոդավորված ձևաչափով: Սա MIME ստանդարտի կողմից կիրառվող մեթոդներից մեկն է՝ պարզ տեքստից բացի այլ տվյալներ ուղարկելու համար:

Ծրագրավորման շատ լեզուներ, ինչպիսիք են PHP-ն և Javascript-ը, ներառում են Base64 կոդավորման և ապակոդավորման գործառույթներ՝ Base64 կոդավորման միջոցով փոխանցված տվյալները մեկնաբանելու համար:

Base64 կոդավորման տրամաբանություն

Base64 կոդավորումը բաժանում է երկուական տվյալները 6-բիթանոց հատվածների՝ 3 լրիվ բայթից և ներկայացնում դրանք որպես տպագրվող նիշեր ASCII ստանդարտում: Դա անում է հիմնականում երկու քայլով:

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

64 նիշերը (այստեղից էլ՝ Base64 անվանումը) 10 նիշ են, 26 փոքրատառ, 26 մեծատառ, ինչպես նաև Plus նշանը (+) և առաջ կտրվածք (/): Կա նաև 65-րդ նիշ, որը հայտնի է որպես pad, որը հավասար նշանն է (=): Այս նիշն օգտագործվում է, երբ երկուական տվյալների վերջին հատվածը չի պարունակում ամբողջական 6 բիթ։

Base64 կոդավորման օրինակ

Օրինակ, վերցրեք երեք ASCII թվեր 155, 162 և 233: Այս երեք թվերը կազմում են 100110111010001011101001 երկուական հոսք: Երկուական ֆայլը, ինչպես պատկերը, պարունակում է երկուական հոսք, որն աշխատում է տասնյակ կամ հարյուր հազարներով: և մեկը։

Base64 կոդավորիչը սկսում է՝ բաժանելով երկուական հոսքը վեց նիշերից բաղկացած խմբերի.

Վեց նիշանոց երկուական հոսքը փոխակերպում է երկուական (կամ բազային-2) նիշերի միջև տասնորդական (բազային-10) նիշերի՝ երկուական հաջորդականության 1-ով ներկայացված յուրաքանչյուր արժեքը իր դիրքային քառակուսու հետ:Սկսած աջից և շարժվելով ձախ և սկսած զրոյից՝ երկուական հոսքի արժեքները ներկայացնում են 2^0, ապա 2^1, ապա 2^2, ապա 2^3, ապա 2^4, ապա 2^5::

Ահա դրան նայելու ևս մեկ տարբերակ: Սկսած ձախից, յուրաքանչյուր դիրքը արժե 1, 2, 4, 8, 16 և 32: Եթե երկուական համարը բնիկում ունի 1, դուք ավելացնում եք այդ արժեքը. եթե այն ունի 0 բնիկ, դուք չունեք. 100110 երկուական տողը փոխակերպվում է 38 տասնորդական թվի` 02^01 + 12^1 + 12^2 + 02^3 + 02^4 + 12^5=0+2 +4+0+0+32.

Base64 կոդավորումը վերցնում է այս երկուական տողը և այն բաժանում է 6-բիթանոց արժեքների՝ 38, 58, 11 և 41:

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

Օգտագործելով Base64 փոխակերպման աղյուսակը՝

  • 38-ը m է
  • 58-ը 6 է
  • 11-ը L է
  • 41-ը p է

Այս երկքայլ գործընթացը կիրառվում է ամբողջ երկուական տողի վրա, որը կոդավորված է:

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

Base64 կոդավորման ամբողջ նպատակը՝ ներդիր ավելացնելուց՝ 3 բայթանոց երկուական հատվածները պահպանելու համար մինչև Base64 աղյուսակի միջոցով երկուականը տեքստի վերածելը, փոխանցված երկուական տեղեկատվության ամբողջականության պահպանումն է։

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

Հետևյալ աղյուսակը թարգմանում է Base64 կոդավորման մեջ օգտագործված բոլոր 64 նիշերը:

Base64 կոդավորման աղյուսակ
Արժեք Նիշք Արժեք Նիշք Արժեք Նիշք Արժեք Նիշք
0 A 16 Q 32 g 48 w
1 B 17 R 33 ժ 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 մ 54 2
7 H 23 X 39 55 3
8 I 24 Y 40 o 56 4
9 J 25 Z 41 p 57 5
10 K 26 a 42 ք 58 6
11 L 27 բ 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 զ 47 v 63 /

Վերջախաղի լուծում

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

Լուծումը կայանում է նրանում, որ ավելացնենք բավականաչափ բայթեր 0 արժեքով՝ 3 բայթանոց խումբ ստեղծելու համար: Նման երկու արժեք կցվում է, եթե տվյալներին անհրաժեշտ է մեկ լրացուցիչ բայթ տվյալ, մեկը կցվում է երկու լրացուցիչ բայթի համար:

Իհարկե, այս արհեստական հետին «0»-ները չեն կարող կոդավորվել ստորև բերված կոդավորման աղյուսակի միջոցով: Նրանք պետք է ներկայացված լինեն 65-րդ նիշով: Base64 լրացման նիշը հավասար նշանն է (=) և տեղադրված է կոդավորված տվյալների վերջում:

Խորհուրդ ենք տալիս: