|
|
Процедура кодирования сообщений Base64Процедура предназначена для преобразования двоичных файлов перед передачей их через службы, поддерживающие только 7-битовую ASCII-кодировку (SMTP, NNTP и др.). Сущность преобразования сводится к замене серий двоичных знаков на серии ASCII- символов. Каждая последовательность из трех байт (24 бит) сообщения преобразуется в четыре шестибитовых значения (рис.1). Затем каждому шестибитовому значению ставится в соответствие символ ASCII согласно числу, представленному шестью битами. Количество символов ASCII ограничено 64. Пример соответствия кодов Base64 и ASCII приведен ниже. Если количество символов (байтов) не кратно трем, то используется дополнительный символ “=”.
Рис 1.
Алгоритм декодирования процедуры Base 64Последовательность символов, закодированных методом Base 64, разделяется на группы по 4 символа. Затем каждому символу в соответствии с таблицей кодировки Base64 ставится в соответствие десятичное значение порядкового номера. Каждое десятичное значение представляется в шестибитовом виде, и далее формируется последовательность длиной 24 бита (6*4). Полученная последовательность разбивается на три группы по 8 бит, при приведении которых к символьному виду получаются 3 символа ASCII. Пример реализации алгоритма показан на рисунке 1. Шесть бит первого символа Base64 являются старшими шестью битами первого байта данных. Их необходимо переместить с позиций 1-6 на позиции 3-8. Для этого выполняется операция сдвига влево на две позиции. Затем выделяются биты с позиций 5-6 из второго символа и комбинируются выделенные 6 старших и 2 младших бита. В результате получается 1-й байт данных. Для получения 2-го байта данных, выполняются те же операции, только вместо сдвига влево на два и сдвига вправо на четыре бита выполняется сдвиг влево на четыре и вправо на два бита. Для получения 3-го байта данных берутся 5-6 биты 3-го символа Base64, которые соответствуют первым двум старшим битам данных, и 4-й символ. Результатом сложения является третий байт. |
|
|