ru uk en-us

Категория Главная  

Алгоритм функции base64


2016-10-07 08:00:00

В этой статье описывается общая схема кодирования Base64

Если коротко, то base64 это схема кодирования символьной строки любого набора байт в последовательность только печатных ASCII символов. Т. е. тех симолов, которые легко можно передать по любым каналам связи. Стандарт обозначен в RFC 3548.

Длина результирующего потока символов будет равна

ИСХОДНАЯ_ДЛИНА * 4 / 3 + 6

А если применяется перенос по строкам, то

ИСХОДНАЯ_ДЛИНА * 4 / 3 + len * 4 / 3 * 72 + 7

В общем случае длина исходно сообщения увеличивается примерно на 30%

Основное правило кодирования очень простое - мы умышленно сокращаем диапазон символов, которые мы имеем на выходе. Но из-за этого надо поступиться частью входной информацией или интерпретировать ее несколько иначе, чем поток байт.

Все очень просто. Байт состоит из 8 бит. Если представить входную информацию как цепочку битов, то это будет цепочка длиной N * 8. Разделив эту цепочку на “минибайты” длиной по 6 бит мы получаем следующее:

    Минибайт становится больше чем настоящих байт Каждый минибайт из 6 бит можно представить закодировать как один из символов английского алфавита.

Действительно. Этих символов уже хватит, т. к. 26 это 64. Нам всего лишь надо отыскать эти 64 символа. В base64 используются символы a..z A..Z 0..9 + / и специальный символ = о нем несколько позже. Итак. Для преобразования надо всего лишь разбить поток байт на куски по 6 бит, и каждый кусок будет соответствовать одному из представленных выше символов. И в результате любой поток бит можно преобразовать в печатный вид.

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

Результат кодирования это символьная строка

Z8E6

Как вы уже поняли, наименьший общий делитель числа 8 и 6 - 24 3 байта является и тем самым числом байт на который должна быть выравнена исходная строка, что бы ее можно было кодировать. Если же байт до 3х кратного количества не хватает, то в конце результирующей строки base64 дописывается знак =. Если не хватает 1 байта - один знак =, если двух - два симомвола ==.

Отправить сообщение об ошибке
Если нашли ошибку в тексте выделите ее мышкой и нажмите сочетание клавиш Ctrl+ENTER, укажите правильный текст без ошибки.



Похожие статьи

 Разрешить перетаскивание объектов Windows
 Отключение пункта Исправление неполадок совместимости из контекстного меню ярлыков и исполняемых файлов
 Ярлыки
 Turning On Caret Browsing WINDOWS 8
 


Сайт является частным собранием материалов и представляет собой любительский информационно-образовательный ресурс. Вся информация получена из открытых источников. Администрация не претендует на авторство использованных материалов. Все права принадлежат их правообладателям