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

Егер Интернет - ақпараттық жол, онда электрондық пошта жолдары - бұл тар шар. Тек өте кішкентай арбалар өте алады.

Электрондық поштаның көлік жүйесі тек ASCII мәтіні үшін ғана жасалған. Мәтінді басқа тілдерге немесе еркін файлдарға жіберуге тырысып, өзеннің арғы жағындағы жүк көтергішті алу сияқты.

Үлкен жүк көлігі раввин арқылы қалай жүреді?

Сонда кішігірім кеудеден үлкен жүк көлігін қалай жібересіз? Сіз оны бір жағынан бөліктерге алып, бөліктерді өзен жағалауына салып, екінші жағынан бөліктерден қайта құрастырыңыз.

Файл тіркемесін электрондық пошта арқылы жібергенде де болады . Екілік деректерді кодтау процесі деп аталатын процесс ASCII мәтініне ауысады, оны электронды поштамен қиындықсыз тасымалдауға болады. Алушының соңында деректер декодталған және бастапқы файл қайта құрастырылған.

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

Base64 - құтқару үшін

Base64 кодтауы үш байтты құрайды, олардың әрқайсысы сегіз биттен тұрады және оларды ASCII стандартында төрт басылатын таңба ретінде көрсетеді. Бұл іс жүзінде екі сатыда жасалады.

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

64 таңба (осылайша Base64 атауы) 10 таңбалы, 26 кіші әріп таңбалары, 26 бас әріптер, сондай-ақ '+' және '/' болады.

Егер, мысалы, үш байт 155, 162 және 233 болса, тиісті (және қорқатын) бит ағыны 100110111010001011101001 болып табылады, бұл өз кезегінде 6, 38, 58, 11 және 41 мәндеріне сәйкес келеді.

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

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

Endgame-ді шешу

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

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

Әрине, бұл жасанды тіркемені кодтау кестесін пайдалану арқылы кодталуы мүмкін емес. Олар 65-ші сипатта болуы керек.

Base64 толтырғыш сипаты - бұл '='. Әрине, ол кодталған деректердің соңында ғана пайда болады.

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 Т 35 j 51 z
4 E 20 U 36 k 52 0
5 F 21 V 37 л 53 1
6 G 22 W 38 м 54 2
7 H 23 X 39 n 55 3
8 Мен 24 Y 40 o 56 4
9 J. 25 Z. 41 с 57 5
10 K 26 а 42 q 58 6
11 L 27 б 43 r 59 7
12 М 28 с 44 с 60 8
13 N 29 d 45 t 61 9
14 O 30 e 46 u 62 +
15 Р 31 f 47 v 63 /