Base64 — позиционная система счисления с основанием 64 печатных символов ASCII (American Standard Code for Information Interchange). Система применяется, например, для представления бинарных файлов в электронной почте. Все варианты Base64 используют символы A-Z, a-z и 0-9, всего 62 знака, недостающие два знака в системах реализации заменены разными символами. Каждые три исходных байта кодируются четырьмя символами.
История Base64
Сначала по электронной почте можно было передавать только текст (RFC 822). Со временем вместе с текстом потребовалось передавать аудио-, видео- и графические файлы, приложения и т. д. Возникла необходимость преобразовывать двоичный файл в текстовый. К уже существовавшему тогда UUE-кодированию (Uuencode) добавился Base64, который используется в спецификации MIME (Multipurpose Internet Mail Extensions) (RFC 2045-2049).
MIME представляет собой стандарт описания заголовков в электронных сообщениях. Его применение позволяет отправлять несколько вложений в одном письме, например, архивированные и текстовые файлы или HTML-cтраницы. Почтовая программа, понимающая MIME, свободно извлекает архив из текстового файла, показывает сообщение и обрабатывает теги HTML. Например, Outlook Express, самостоятельно запускает скрипты, вложенные в HTML-страницу.
Base64 зародился в эру семи-, шести- и трёхбитных байтов. Старые кодировки не поддеживали восьмибитный стандарт, из-за этого часть информации утрачивалась при переносе из старой системы в новую. Нередко при отправке писем почтовый сервер сбрасывал лишний, восьмой, бит или не передавал видео и изображения. Для устранения подобных неприятностей и были разработаны кодировки преобразования двоичного кода в текст. Самая популярная и эффективная система — Base64, благодаря простоте она используется повсеместно.
Алгоритм под названием «кодирование для печати» был впервые описан в 1987 году, Base64 появился в июне 1992 года. Версии данной системы: Base16, Base32, Base36, Base58, Base85, Base91 и Base122. Более поздние стандарты активно используются в IT-сфере.
Интересный факт
Для кодирования URL в некоторых системах используется Base58, отличающаяся от Base64 отсутствием в конечном тексте символов, которые могут восприниматься человеком неоднозначно. Исключены 0 (ноль), O (заглавная латинская o), I (заглавная латинская i), l (маленькая латинская L). Также исключены символы + (плюс) и / (косая черта), которые при кодировании URL могут приводить к неверной интерпретации адреса.
Base64 обеспечивает обратимое кодирование с возможностью восстановления. Сервис переводит символы восьмибитной кодовой таблицы в символы, сохраняющиеся при передаче информации в сетях и между устройствами.