Колькі 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.

Гэтыя лічбы пераўтворацца ў ASCII-сімвалы ў другім кроку, выкарыстоўваючы табліцу кадавання Base64. У 6-бітныя значэння нашага прыкладу перакладу паслядоўнасці ASCII «m6Lp».

Гэты двухэтапный працэс прымяняецца да ўсёй паслядоўнасці байтаў, якія кадуюцца. Для таго, каб забяспечыць кадаваныя дадзеныя могуць быць правільна надрукаваныя і не перавышае мяжа даўжыні радка любога паштовага сервера, ўстаўляюцца сімвалы новага радка, каб захаваць даўжыню лініі ніжэй 76 знакаў. Гэтыя сімвалы новага радка кадуюцца як і ўсе іншыя дадзеныя.

рашэнне Endgame

У канцы працэсу кадавання, мы маглі б сутыкнуцца з праблемай. Калі памер зыходных дадзеных у байтах кратна тром, то ўсё працуе выдатна. Калі гэта не так, мы маглі б у канчатковым выніку з адной ці дзвюма 8-бітавых байтаў. Для правільнага кадавання, нам трэба роўна тры байта, аднак.

Рашэнне складаецца ў тым, каб дадаць дастатковую колькасць байт са значэннем "0", каб стварыць 3-байтавая групу. Два такіх значэнняў дадаюцца, калі ў нас ёсць адзін дадатковыя байты дадзеных, адзін дадаюцца два дадатковых байта.

Вядома, гэтыя штучныя адстаючы «0 не можа быць закадаваны з выкарыстаннем табліцы кадавання ніжэй. Яны павінны быць прадстаўлены ў 65 знака.

Сімвал запаўнення Base64 з'яўляецца «=». Натуральна, гэта можа толькі калі-небудзь з'явіцца ў канцы Кадаваць дадзеных.

Base64 кадаваньне Табліца

значэнне голец значэнне голец значэнне голец значэнне голец
0 16 Q 32 г 48 вага
1 У 17 R 33 гадзіну 49 х
2 З 18 S 34 Я 50 Y
3 D 19 T 35 J 51 Z
4 Е 20 U 36 Да 52 0
5 F 21 У 37 L 53 1
6 G 22 W 38 м 54 2
7 H 23 X 39 N 55 3
8 Я 24 Y 40 аб 56 4
9 J 25 Z 41 р 57 5
10 Да 26 42 Q 58 6
11 L 27 б 43 р 59 7
12 M 28 з 44 s 60 8
13 N 29 d 45 T 61 9
14 Аб 30 е 46 U 62 +
15 P 31 е 47 v 63 /