Алгоритм шифрования 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
Все CMD команды

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

Windows
help2site
Правильная установка Windows 10

Вы решили обновиться до Windows 10 или установить эту операционную систему с нуля? В таком случае следует более подробно рассмотреть данный процесс. Если говорить о

Программы
help2site
Как перенести чаты WhatsApp

Сегодня хотим рассказать, как же перенести все чаты в WhatsApp и не потерять истории переписок? Перенос истории чатов на новый Android простое дело. Есть возможность

Программы
help2site
Установка Интернет Контроль Сервис на VirtualBox

VirtualBox (Oracle VM VirtualBox) — программный продукт виртуализации для операционных систем Microsoft Windows, Linux, FreeBSD, Mac OS X, Solaris/OpenSolaris, ReactOS, DOS и других, разработанный компанией Innotek, в настоящее