Base64 кодтауы қалай жұмыс істейді

Мазмұны:

Base64 кодтауы қалай жұмыс істейді
Base64 кодтауы қалай жұмыс істейді
Anonim

Base64 кодтау – бұл екілік деректерді 6-биттік таңба көрінісіне түрлендіру арқылы екілік деректерді ASCII жол пішіміне түрлендіру процесі. Base64 кодтау әдісі кескіндер немесе бейне сияқты екілік деректер деректерді кәдімгі мәтін (ASCII) пішімінде жіберуге арналған жүйелер арқылы тасымалданғанда қолданылады.

Неліктен Base64 кодтауы қолданылады?

Base64 кодтау қажеттілігі мультимедиа шикі екілік пішімде мәтінге негізделген жүйелерге жіберілген кезде пайда болатын мәселелерден туындайды.

Мәтінге негізделген жүйелер (мысалы, электрондық пошта) екілік деректерді таңбалардың кең ауқымы, соның ішінде арнайы пәрмен таңбалары ретінде түсіндіретіндіктен, тасымалдау құралына жіберілетін екілік деректердің көпшілігі сол жүйелерде қате түсіндіріледі және жоғалады немесе бүлінеді. жіберу процесі.

Image
Image

Тасымалдау мәселелерін болдырмайтындай екілік деректердің мұндай түрін кодтаудың бір әдісі оны Base64 кодталған пішімінде қарапайым ASCII мәтіні ретінде жіберу болып табылады. Бұл қарапайым мәтіннен басқа деректерді жіберу үшін MIME стандартында қолданылатын әдістердің бірі.

PHP және Javascript сияқты көптеген бағдарламалау тілдері Base64 кодтауы арқылы жіберілген деректерді түсіндіру үшін Base64 кодтау және декодтау функцияларын қамтиды.

Base64 кодтау логикасы

Base64 кодтауы екілік деректерді 3 толық байттан тұратын 6 биттік сегменттерге бөледі және оларды ASCII стандартында басып шығарылатын таңбалар ретінде көрсетеді. Ол мұны екі қадаммен жасайды.

Бірінші қадам - екілік жолды 6 биттік блоктарға бөлу. Base64 кодталған деректердің басып шығаруға және оқуға болатындығына көз жеткізу үшін тек 6 бит (2^6=64 таңбаға сәйкес) пайдаланады. ASCII қол жетімді арнайы таңбалардың ешқайсысы пайдаланылмайды.

64 таңба (сондықтан Base64 атауы) 10 цифр, 26 кіші әріп, 26 бас әріп, сондай-ақ Плюс белгісі (+) және Алға қиғаш сызық (/) болып табылады. Сондай-ақ pad деп аталатын 65-ші таңба бар, ол Тең белгісі (=). Бұл таңба екілік деректердің соңғы сегментінде толық 6 бит болмаған кезде пайдаланылады.

Base64 кодтау мысалы

Мысалы, 155, 162 және 233 үш ASCII санын алыңыз. Бұл үш сан 100110111010001011101001 екілік ағынын құрайды. Екілік файл, кескін сияқты, ондаған немесе жүздеген мыңға созылатын екілік ағынды қамтиды. және бір.

Base64 кодтаушысы екілік ағынды алты таңбадан тұратын топтарға бөлу арқылы басталады: 100110 111010 001011 101001. Бұл топтамалардың әрқайсысы 38, 58, 11 және 41 сандарына аударылады.

Алты таңбалы екілік ағын екілік (немесе негіз-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 кодтауы бұл екілік жолды алып, оны 38, 58, 11 және 41 6-биттік мәндерге бөледі.

Соңында, бұл сандар Base64 кодтау кестесін пайдаланып ASCII таңбаларына түрлендіріледі. Бұл мысалдың 6-биттік мәндері m6Lp ASCII тізбегіне аударылады.

Base64 түрлендіру кестесін пайдалану:

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

Бұл екі қадамдық процесс кодталған бүкіл екілік жолға қолданылады.

Кодталған деректердің дұрыс басып шығарылуына және кез келген пошта серверінің жол ұзындығының шегінен аспайтынына көз жеткізу үшін жол ұзындығын 76 таңбадан төмен ұстау үшін жаңа жол таңбалары енгізіледі. Жаңа жол таңбалары барлық басқа деректер сияқты кодталған.

Base64 кодтауының барлық мақсаты, 3 байт екілік сегменттерді сақтау үшін толтыру қосудан бастап, Base64 кестесін пайдаланып екілік файлды мәтінге түрлендіруге дейін, тасымалданатын екілік ақпараттың тұтастығын сақтау болып табылады.

Base64 кодтау кестесі

Келесі кесте Base64 кодтауында қолданылатын барлық 64 таңбаны аударады.

Base64 кодтау кестесі
Мән Char Мән Char Мән Char Мән Char
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 m 54 2
7 H 23 X 39 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 u 62 +
15 P 31 f 47 v 63 /

Соңғы ойынды шешу

Кодтау процесінің соңында мәселе болуы мүмкін. Байттардағы бастапқы деректердің өлшемі үш еселік болса, бәрі жақсы жұмыс істейді. Егер олай болмаса, бос байттар болуы мүмкін. Дұрыс кодтау үшін екілік деректердің дәл 3 байты қажет.

Шешім 3 байттық топты жасау үшін 0 мәні бар жеткілікті байтты қосу болып табылады. Деректерге қосымша бір байт деректер қажет болса, осындай екі мән қосылады, біреуі қосымша екі байтқа қосылады.

Әрине, бұл жасанды 0-ны төмендегі кодтау кестесін пайдаланып кодтауға болмайды. Олар 65-ші таңбамен көрсетілуі керек. Base64 толтырғыш таңбасы Тең белгісі (=) болып табылады және кодталған деректердің соңында орналасады.

Ұсынылған: