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

Windows и Windows Server
help2site
Чистим автозагрузку стандартными средствами

Термин автозагрузка говорит сам за себя, то есть при загрузки системы вместе с ней запускаются и различные программы, установленные на вашем компьютере. Но, например, если

Разработка сайтов
help2site
Drupal: taxonomy, Views, поиск и фасетная фильтрация

Оглавление Настройка сортировки на Drupal 7 или Фасетный поиск Умный фильтр или Фасетный поиск — это фильтр по категориям товара , которую можно видеть в крупных

SEO и диагностика сайтов
help2site
Яндекс вебмастер. Инструменты и панель Webmaster Yandex

Современный владелец сайта или сайтов а также сео оптимизатор, нуждается в сервисе с помощью которого он сможет проводить качественный мониторинг сайтов для лучшего продвижения сайта

Разработка сайтов
help2site
Настройка SQLite-соединения под Windows

Когда вы создаете новое приложение в Yii, при генерации файла класса модели для таблицы БД может возникнуть ошибка:  exception ‘CDbException’ with message ‘CDbConnection failed to

Серверы и администрирование
help2site
Как перезапустить Apache в Windows

После изменения httpd.conf, виртуальных хостов, модулей PHP или других настроек Apache веб-сервер обычно нужно перезапустить, чтобы новая конфигурация вступила в силу. В Windows это можно

Разработка сайтов
help2site
Памятка по форматированию контента

Базовые требования к тексту: полезный для потребителя; отсутствуют ошибки. Перечисленные ниже рекомендации, при их соблюдении, помогут повысить доверие к Вашему сайту, как со стороны клиентов,

Серверы и администрирование
help2site
Расширение rds bar для браузера

Оглавление Расширение seo анализа сайта для заработка (да и для любого другого). В одной из статей блога я уже рассказывал про расширения для браузера, которые

Windows и Windows Server
help2site
Команда MD

Команда md позволяет создавать каталог или промежуточные каталоги в указанном пути. Команда md выполняет ту же функцию что и команда mkdir, поэтому речь пойдет об