Base64


В компьютерном программировании Base64 это группа схем преобразования двоичного кода в текст , которые представляют двоичные данные (точнее, последовательность 8-битных байтов) в виде последовательностей из 24 бит, которые могут быть представлены четырьмя 6-битными цифрами Base64.

Обычный для всех схем кодирования двоичного текста в текст, Base64 предназначен для передачи данных, хранящихся в двоичных форматах, по каналам, которые надежно поддерживают только текстовое содержимое. Base64 особенно распространен во всемирной паутине [1] , где одним из его применений является возможность встраивать файлы изображений или другие двоичные ресурсы в текстовые ресурсы, такие как файлы HTML и CSS . [2]

Base64 также широко используется для отправки вложений электронной почты. Это необходимо, поскольку SMTP в своей первоначальной форме был разработан для передачи только 7-битных символов ASCII. Это кодирование вызывает накладные расходы в размере 33–37% (33% из-за самого кодирования; до 4% больше из-за вставленных разрывов строк).

Конкретный набор из 64 символов, выбранный для представления 64-значных значений для базы, варьируется в зависимости от реализации. Общая стратегия состоит в том, чтобы выбрать 64 символа, которые являются общими для большинства кодировок и которые также можно распечатать . Эта комбинация оставляет данные маловероятными для изменения при передаче через информационные системы, такие как электронная почта, которые традиционно не были 8-битными . [3] Например, реализация MIME Base64 использует A- Z, a- zи 0- 9для первых 62 значений. Другие варианты разделяют это свойство, но отличаются символами, выбранными для последних двух значений; например UTF-7 .

Самые ранние экземпляры этого типа кодирования были созданы для коммутируемой связи между системами, работающими под одной и той же ОС , например, uuencode для UNIX и BinHex для TRS-80 (позже адаптированного для Macintosh ), и поэтому могли делать больше предположений о какие символы безопасно использовать. Например, uuencode использует прописные буквы, цифры и многие знаки препинания, но не строчные. [4] [5] [6] [3]

В приведенном ниже примере для простоты используется текст ASCII , но это не типичный вариант использования, поскольку его уже можно безопасно передавать во все системы, поддерживающие Base64. Более типичным использованием является кодирование двоичных данных (например, изображения); результирующие данные Base64 будут содержать только 64 различных символа ASCII, и все они могут быть надежно переданы между системами, что может повредить необработанные исходные байты.


Пример SVG, содержащего встроенные изображения JPEG, закодированные в Base64 [13]