Алгоритм шифрования 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 позволяют удалять как каталоги, так и

Оборудование
help2site
Самые лучшие кастомные прошивки

В прошлой статье мы уже писали о кастомных прошивках и о ее преимуществах, а теперь пришло время поговорить о сборках, о том какая из них

Web-Дизайн
help2site
Всплывающие подписи изображений

В CSS3 скрыт огромный потенциал , и в этой статье мы используем некоторые из них для создания интересных эффектов для подписи картинок. И так мы

Web-Дизайн
help2site
Установка модуля Drupal редактора текстов

Для установки модуля редактора текстов (будем использовать редактор текстов FCKeditor и модуль его интеграции в Drupal c аналогичным именем (как у редактора текстов)), скачаем его

Оборудование
help2site
Сокет центрального процессора и его виды

Socket одно из основополагающих понятий, когда речь идет о сборке компьютера. Наверно каждый начинающий пользователь ПК при попытки собрать компьютер или сменить процессор задавался вопросом,

Оборудование
help2site
Обзор мобильной видеокарты NVIDIA GeForce GTX 780M

Мобильная видеокарта NVIDIA GeForce GTX 780M относиться к классу дорогих графических адаптеров, которые имеют полноценную поддержку технологии DirectX 11. Данный графический чип создан на одной