Алгоритм шифрования base64

Кодировка Base64 используется для преобразования двоичных данных в текстовый формат, который позволяет транспортировать их в средах, которые могут безопасно обрабатывать только текст. Варианты использования — это кодирование UID для использования в URL-адресах HTTP, кодирование ключей шифрования и сертификатов, позволяющих безопасно переносить их по электронной почте, отображать их на страницах HTML и использовать для копирования и вставки. 

Base64 иногда также упоминается как PEM, которая выступает за P rivacy повышенной E lectronic M аила. Там Base64 использовался для создания печатного текста снова после двоичных данных электронной почты, которые были сгенерированы в процессе шифрования электронной почты.

Как это устроено

Кодирование Base64 берет исходные двоичные данные и оперирует ими, разделяя их на токены по три  байта. Байт состоит из восьми битов, поэтому Base64 занимает всего 24 бита. Эти 3 байта затем преобразуются в четыре печатных символа из стандарта ASCII.

Первый шаг — взять три байта (24 бита) двоичных данных и разделить их на четыре числа по шесть бит. Поскольку стандарт ASCII определяет использование семи битов, Base64 использует только 6 битов (что соответствует 2 ^ 6 = 64 символа), чтобы обеспечить возможность печати закодированных данных и не использовать ни один из специальных символов, доступных в ASCII. Название алгоритма Base64 происходит от использования этих 64 символов ASCII. Символами ASCII, используемыми для Base64, являются цифры 0-9, алфавиты 26 строчных и 26 прописных символов, а также два дополнительных символа «+» и «/».

Таблица кодирования / декодирования Base64
AВСDЕFгЧАСяJКLMNОп
0123456789101112131415
QрSTUВWИксYZaбсdее
16171819202122232425262728293031
гчасяJКLмNопQрsTUv
32333435363738394041424344454647
весИксYZ0123456789+/
48495051525354555657585960616263

В наших программах мы можем просто определить эту таблицу как массив символов. Например, в «C» мы будем делать:

/ * ---- Таблица кодирования / декодирования Base64 --- * /
char b64 [] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 + /";

Технически, используется 65-ый символ «=», но об этом подробнее ниже.

Преобразование ASCII 3-байтовых 24-битных групп повторяется до тех пор, пока не будет закодирована вся последовательность исходных байтов данных. Чтобы обеспечить правильную печать закодированных данных и не превышать ограничение длины строки на любом почтовом сервере, вставляются символы новой строки, чтобы длина строк не превышала 76 символов.

Что происходит, когда последняя последовательность байтов данных для кодирования имеет длину не более 3 байтов? Если размер исходных данных в байтах не кратен трем, мы можем получить только один или два оставшихся (8-битных) байта. Решение состоит в том, чтобы добавить недостающие байты, используя значение байта «0» для создания окончательной 3-байтовой группы. Поскольку эти искусственные конечные «0» не могут быть закодированы с использованием таблицы кодирования, мы вводим 65-й символ: «=» для представления «0». Естественно, этот символ может появляться только в конце закодированных данных.

Пример

 

Допустим, мы хотим преобразовать три байта 155, 162 и 233. Соответствующий 24-битный поток — 100110111010001011101001.

155 -> 10011011
162 -> 10100010
233 -> 11101001

Разделение этих битов на 4 группы по 6 бит создает следующие 4 десятичных значения: 38, 58, 11 и 41.

100110 -> 38
111010 -> 58
001011 -> 11
101001 -> 41

Преобразование их в символы ASCII с использованием таблицы кодирования Base64 переводит их в последовательность ASCII «m6Lp».

38 -> м
58 -> 6
11 -> L
41 -> р
Материалы: КонстантинаОстровского
Свежие записи
Команда RD

Команда RD и RMDIR позволяют удалять как каталоги, так и

Команда RENAME

RENAME что это? Команда RENAME позволяет переименовать файл или каталог.

Команда MD

Команда md позволяет создавать каталог или промежуточные каталоги в указанном

Разработка сайтов
help2site
Изучение HTML. Вёрстка сайта из PSD шаблона.

В данной статье речь пойдёт о сайтах, которые разработчики создают вручную, т. е. верстают. Статья предназначена для пользователей, знакомых с HTML и CSS. Также желательно знать хотя бы основы Adobe Photoshop

SEO и диагностика сайтов
help2site
Оптимизация сайта. Внутренняя и внешняя

Оглавление Сайт: внутренняя оптимизация, внешняя оптимизация. Оптимизация сайта – это тема сегодняшней статьи. А если быть точнее – то эта статья будет продолжением предыдущей стать. И в

CMS и сайты
help2site
Drupal theming: темы, регионы, меню и комментарии

Как добавить новую позицию (регион) блока в тему (шаблон) Друпал 7. Добавление новой позиции в тему Друпал 7 для большей функциональности. Создание нового региона в

Разработка сайтов
help2site
Вставка содержимого внешнего файла в PHP

В PHP большие файлы сценариев можно разделять на части (модули) и включать один файл в состав другого файла. Команда require require «имя_файла«; Команда require (затребовать)

Разработка сайтов
help2site
Алгоритм шифрования base64

Кодировка Base64 используется для преобразования двоичных данных в текстовый формат, который позволяет транспортировать их в средах, которые могут безопасно обрабатывать только текст. Варианты использования —

Windows и Windows Server
help2site
Все CMD команды

В этом разделе собран полный список CMD команд Windows от А до Я. Также будут добавлены команды Linux. Оглавление A append — позволяет программам открывать