Base64 kodlash qanday ishlaydi

Mundarija:

Base64 kodlash qanday ishlaydi
Base64 kodlash qanday ishlaydi
Anonim

Base64 kodlash - bu ikkilik ma'lumotlarni 6 bitli belgilar tasviriga aylantirish orqali ikkilik ma'lumotlarni ASCII qator formatiga aylantirish jarayoni. Base64 kodlash usuli rasm yoki video kabi ikkilik maʼlumotlar oddiy matn (ASCII) formatida maʼlumotlarni uzatish uchun moʻljallangan tizimlar orqali uzatilganda ishlatiladi.

Nega Base64 kodlash ishlatiladi?

Base64 kodlash zarurati media ikkilik formatda matnga asoslangan tizimlarga uzatilganda yuzaga keladigan muammolardan kelib chiqadi.

Matnga asoslangan tizimlar (masalan, elektron pochta) ikkilik ma'lumotlarni keng doiradagi belgilar, jumladan, maxsus buyruq belgilari sifatida talqin qilganligi sababli, uzatish vositalariga uzatiladigan ikkilik ma'lumotlarning aksariyati ushbu tizimlar tomonidan noto'g'ri talqin qilinadi va yo'qoladi yoki buziladi. uzatish jarayoni.

Image
Image

Bunday ikkilik ma'lumotlarni uzatish muammolarini oldini olish uchun kodlash usullaridan biri uni oddiy ASCII matni sifatida Base64 kodlangan formatda yuborishdir. Bu oddiy matndan boshqa maʼlumotlarni yuborish uchun MIME standarti tomonidan qoʻllaniladigan usullardan biridir.

PHP va Javascript kabi koʻplab dasturlash tillari Base64 kodlash yordamida uzatiladigan maʼlumotlarni sharhlash uchun Base64 kodlash va dekodlash funksiyalarini oʻz ichiga oladi.

Base64 kodlash mantiqi

Base64 kodlash ikkilik ma'lumotlarni 3 to'liq baytdan iborat 6 bitli segmentlarga ajratadi va ularni ASCII standartida chop etiladigan belgilar sifatida ifodalaydi. Buni ikki bosqichda amalga oshiradi.

Birinchi qadam ikkilik qatorni 6 bitli bloklarga ajratishdir. Base64 kodlangan ma'lumotlarning chop etilishi va odamlar tomonidan o'qilishi mumkin bo'lishini ta'minlash uchun faqat 6 bit (2^6=64 belgiga to'g'ri keladi) foydalanadi. ASCII da mavjud maxsus belgilarning hech biri ishlatilmaydi.

64 ta belgi (shuning uchun Base64 nomi) 10 ta raqam, 26 ta kichik harf, 26 ta katta harf, shuningdek, Plus belgisi (+) va Oldinga qiyshiq chiziq (/) dan iborat. Shuningdek, pad deb nomlanuvchi 65-belgi bor, bu Teng belgisi (=). Bu belgi ikkilik maʼlumotlarning oxirgi segmentida toʻliq 6 bit boʻlmasa ishlatiladi.

Base64 kodlash misoli

Masalan, uchta ASCII 155, 162 va 233 raqamlarini oling. Bu uchta raqam 100110111010001011101001 ikkilik oqimni tashkil qiladi. Ikkilik fayl, rasm kabi, oʻnlab yoki yuzlab minglab ikkilik oqimni oʻz ichiga oladi. va bir.

Base64 kodlovchisi ikkilik oqimni oltita belgidan iborat guruhlarga ajratish bilan boshlanadi: 100110 111010 001011 101001. Bu guruhlarning har biri 38, 58, 11 va 41 raqamlariga tarjima qilinadi.

Olti belgidan iborat ikkilik oqim ikkilik (yoki asosiy-2) oʻnlik (asos-10) belgilarni ikkilik ketma-ketlikda 1 bilan ifodalangan har bir qiymatni oʻzining pozitsion kvadrati bilan kvadratiga aylantirish orqali oʻzgartiradi. O'ngdan chapga siljigan va noldan boshlab, ikkilik oqimdagi qiymatlar 2^0, keyin 2^1, keyin 2^2, keyin 2^3, keyin 2^4, keyin 2^5 ni ifodalaydi.

Buni koʻrishning yana bir usuli. Chapdan boshlab, har bir pozitsiya 1, 2, 4, 8, 16 va 32 ga teng. Agar ikkilik raqam uyada 1 bo'lsa, siz bu qiymatni qo'shasiz; agar u uyada 0 bo'lsa, sizda yo'q. Ikkilik qator 100110 38 oʻnlik soniga aylanadi: 02^01 + 12^1 + 12^2 + 02^3 + 02^4 + 12^5=0+2 +4+0+0+32.

Base64 kodlash bu ikkilik qatorni oladi va uni 6-bitli 38, 58, 11 va 41 qiymatlariga ajratadi.

Nihoyat, bu raqamlar Base64 kodlash jadvali yordamida ASCII belgilariga aylantiriladi. Ushbu misolning 6 bitli qiymatlari ASCII m6Lp ga tarjima qilinadi.

Base64 konversiya jadvalidan foydalanish:

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

Bu ikki bosqichli jarayon kodlangan butun ikkilik qatorga qoʻllaniladi.

Kodlangan ma'lumotlar to'g'ri chop etilishi va hech qanday pochta serverining satr uzunligi chegarasidan oshmasligi uchun satr uzunligi 76 belgidan past bo'lishi uchun yangi qator belgilar kiritiladi. Yangi qator belgilari boshqa barcha maʼlumotlar kabi kodlangan.

Base64 kodlashning butun maqsadi, 3 baytlik ikkilik segmentlarni saqlash uchun toʻldirishni qoʻshishdan tortib, Base64 jadvali yordamida binarni matnga oʻtkazishgacha, uzatiladigan ikkilik maʼlumotlarning yaxlitligini saqlashdir.

Base64 kodlash jadvali

Quyidagi jadval Base64 kodlashda ishlatiladigan barcha 64 ta belgini tarjima qiladi.

Base64 kodlash jadvali
Qiymat Char Qiymat Char Qiymat Char Qiymat 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 55 3
8 men 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 /

Oxirgi oʻyinni yechish

Kodlash jarayoni oxirida muammo yuzaga kelishi mumkin. Agar baytlardagi asl ma'lumotlarning o'lchami uchga ko'p bo'lsa, hamma narsa yaxshi ishlaydi. Agar shunday bo'lmasa, bo'sh baytlar bo'lishi mumkin. To'g'ri kodlash uchun 3 baytlik ikkilik ma'lumotlar kerak.

Yechim 3 baytli guruh yaratish uchun qiymati 0 boʻlgan yetarli bayt qoʻshishdir. Agar ma'lumotlarga qo'shimcha bir bayt ma'lumot kerak bo'lsa, ikkita shunday qiymat qo'shiladi, biri qo'shimcha ikkita baytga qo'shiladi.

Albatta, bu sun'iy orqadagi "0"larni quyidagi kodlash jadvali yordamida kodlab bo'lmaydi. Ular 65-belgi bilan ifodalanishi kerak. Base64 toʻldirish belgisi Teng belgisi (=) boʻlib, kodlangan maʼlumotlarning oxiriga joylashtiriladi.

Tavsiya: