Что такое Base64
Base64 — это способ кодирования бинарных данных в чистый текст. Он использует 64 печатных символа (A-Z, a-z, 0-9, +, /) для представления любых бинарных данных, позволяя передавать их через каналы, поддерживающие только текст (например, JSON, XML, URL, электронную почту).
Принцип кодирования
Таблица символов
Base64 использует 64 символа: заглавные A-Z (26), строчные a-z (26), цифры 0-9 (10), знак плюса + и косую черту /, всего 64. Знак равенства = применяется как заполнитель в конце.
Процесс кодирования
- Разбейте входные данные на группы по 3 байта (24 бита)
- Разделите 24 бита на 4 группы по 6 бит
- Каждые 6 бит соответствуют одному символу Base64 (2 в степени 6 = 64, ровно 64 символа)
- Если до 3 байт не хватает, дополните знаком =
Пример
3 байта на входе (24 бита) → 4 символа Base64. Поэтому число байт после кодирования составляет 4/3 от исходного, то есть около 133%, рост на 33%.
Почему объем увеличивается на 33%
По сути, 1 байт может представлять 256 значений (8 бит), а каждый символ Base64 представляет лишь 64 значения (6 бит). Чтобы передать тот же объем информации, 6-битное кодирование использует в 8/6 = 4/3 раза больше символов, чем 8-битное. Поэтому объем после кодирования Base64 составляет 4/3 от исходного — рост на 33%.
Это неотъемлемая плата Base64 — пространство обменивается на «текстовую передаваемость».
Пример кодирования
Текст "Man" (3 байта ASCII):
- M = 77 = 01001101
- a = 97 = 01100001
- n = 110 = 01101110
- Склеиваем в 24 бита: 01001101 01100001 01101110
- Делим на 4 группы по 6 бит: 010011 010110 000101 101110
- Соответствующие символы Base64: T W F u
- Результат кодирования: TWFu
3 байта превращаются в 4 байта, ровно 4/3.
Варианты Base64
Стандартный Base64
Таблица символов содержит + и /, в конце заполнение знаком =. Подходит для общего применения.
Base64, безопасный для URL
- и / имеют особый смысл в URL; они заменяются на - и _. Подходит для передачи в URL.
Base64URL
URL-безопасный вариант, часто применяется в JWT (JSON Web Token).
Base64 против Base32 против Hex
Base64
- Набор из 64 символов
- Рост на 33% после кодирования
- Символы включают заглавные и строчные буквы, цифры и +/; чувствителен к регистру
Base32
- Набор из 32 символов (A-Z, 2-7)
- Рост на 60% после кодирования
- Не чувствителен к регистру, избегает легко путаемых символов; подходит для ручного ввода
Hex (шестнадцатеричный)
- Набор из 16 символов (0-9, a-f)
- Рост на 100% после кодирования (каждый байт — два символа)
- Самый простой и совместимый, но объем удваивается
Объем: Hex > Base32 > Base64. Если важна компактность — выбирайте Base64; если важны совместимость и простота — Hex.
Base64 — это шифрование?
Нет. Base64 — это кодирование, а не шифрование. Любой может декодировать его, защиты ключом нет. Использовать Base64 как шифрование — серьезное заблуждение: он лишь «маскирует» данные под бессмысленный набор, а декодирование возвращает исходный текст.
Для конфиденциальных данных используйте алгоритмы шифрования вроде AES; Base64 предназначен только для транспортного кодирования.
Случаи применения
Передача данных
Бинарные данные передаются через текстовые каналы (JSON, XML, URL, почта) — кодируются в Base64 как текст.
Встраивание небольших изображений
Небольшие картинки кодируются в Base64 и встраиваются inline в HTML/CSS, сокращая число HTTP-запросов (см. применение изображений в Base64).
JWT
JSON Web Token использует Base64URL для кодирования header и payload.
Data URI
Протокол data URL использует Base64 для встраивания ресурсов.
Basic Auth
HTTP Basic-аутентификация кодирует имя пользователя и пароль в Base64 (учтите: это не шифрование; используйте вместе с HTTPS).
Кодирование и декодирование в DocsAll
Инструмент кодирования и декодирования Base64:
- Введите текст или строку Base64
- Выберите кодирование или декодирование
- Преобразуйте одним нажатием
- Скопируйте результат
Обработка в браузере, данные не покидают устройство.
Частые ловушки
Принимать за шифрование
Base64 — не шифрование; не полагайтесь только на Base64 для «защиты» конфиденциальных данных.
Рост объема после кодирования
Большие файлы, закодированные в Base64, разбухают на 33%, увеличивая расходы на передачу и хранение. Если доступен бинарный канал, не используйте Base64.
Путаница с набором символов
Стандартный Base64 содержит +/; для размещения в URL их нужно экранировать или использовать URL-безопасный вариант. Смешивание вариантов ведет к ошибке декодирования.
Завершающий = нельзя опускать
Символ-заполнитель = — часть кодировки; его пропуск может вызвать ошибку декодирования. Некоторые реализации допускают пропуск, но это нестандартно.
Итог
Base64 — это кодирование, а не шифрование: представляет бинарные данные 64 символами, а рост объема на 33% — неотъемлемая плата. Назначение — позволить бинарным данным проходить через текстовые каналы. В URL используйте URL-безопасный вариант. Инструмент кодирования/декодирования DocsAll работает в браузере, данные не передаются вовне.