Что такое Base64 и зачем он нужен
Base64 — это схема кодирования двоичных данных в текст. Она берёт сырые байты — данные, из которых состоят изображения, архивы, криптографические ключи и всё остальное, что не является обычным читаемым текстом, — и записывает их с помощью небольшого безопасного алфавита из 64 печатных символов: 26 заглавных букв A–Z, 26 строчных a–z, десять цифр 0–9 и два дополнительных знака, обычно + и /. Знак равенства используется для дополнения в конце. Поскольку каждый производимый символ является обычным ASCII, результат может передаваться через системы, изначально рассчитанные только на текст.
Именно в этом и состоит причина изобретения Base64. Многие старые протоколы — классический пример это электронная почта — исходят из того, что передаваемое содержимое является текстом. Если передать им сырые двоичные данные, некоторые байты будут искажены, удалены или интерпретированы как управляющие символы, и данные придут повреждёнными. Base64 обходит эту проблему, преобразуя байты в форму, которую любой текстовый канал пропустит нетронутой. На другом конце исходные данные можно восстановить в точности.

Как работает преобразование
Механически Base64 разбивает входные данные на трёхбайтовые блоки — то есть 24 бита — а затем разрезает эти 24 бита на четыре группы по шесть битов. Шесть битов могут представлять 64 возможных значения — именно поэтому алфавит содержит ровно 64 символа. Таким образом, три байта входных данных всегда превращаются в четыре символа на выходе. Если длина входных данных не кратна трём, кодировщик дополняет последнюю группу одним или двумя символами =, чтобы декодировщик знал, где заканчиваются реальные данные.
Это соотношение четыре к трём и объясняет знаменитый прирост размера: результат Base64 примерно на 33% больше исходных данных. Если закодированный текст разбит на строки фиксированной ширины, как того требуют стандарты электронной почты, за переносы строк добавится ещё несколько процентов. Эти накладные расходы — цена совместимости, и в большинстве случаев она оправдана.
Где встречается Base64
Когда знаешь, что искать, Base64 обнаруживается повсюду в повседневных вычислениях:
- Data URI. Небольшое изображение или шрифт можно встроить прямо в HTML или CSS с помощью URI вида
data:, записав содержимое файла в Base64. Браузер декодирует его на месте, экономя отдельный сетевой запрос. - Вложения электронной почты. MIME — стандарт, позволяющий почте переносить файлы, — опирается на Base64 для передачи двоичных вложений через текстовую почтовую систему без повреждений.
- HTTP Basic-аутентификация. Привычный заголовок
Authorization: Basic ...— это просто логин и пароль, соединённые двоеточием и закодированные в Base64, что и объясняет, почему Basic auth всегда должен работать поверх HTTPS. - Токены и конфигурация. JSON Web Token, сертификаты, SSH-ключи и бесчисленное множество значений конфигурации хранятся или передаются в Base64, чтобы они выживали при копировании и в текстовых хранилищах.
Кодирование — это не шифрование
Это самое важное, что нужно понять, и на этом спотыкаются как новички, так и опытные разработчики. Base64 — не шифрование и не обеспечивает никакой безопасности. Здесь нет секретного ключа, нет пароля, и в нём нет ничего приватного. Преобразование полностью публично и совершенно обратимо: любой, кто увидит строку Base64, за секунду декодирует её обратно в исходные байты с помощью такого же инструмента, как этот.
Поэтому Base64 — плохое укрытие для паролей, API-ключей и любых чувствительных данных. Если строка лишь выглядит запутанной, это не делает её защищённой. Шифрование, напротив, преобразует данные с помощью секретного ключа так, что прочитать их может только тот, кто этим ключом владеет. Оба инструмента решают разные задачи: шифрование защищает конфиденциальность, Base64 обеспечивает совместимость. Их часто используют вместе — например, шифруют данные с помощью AES, а затем кодируют зашифротекст в Base64 для передачи по текстовому каналу, — но одно никогда не заменяет другого.

Кодирование и декодирование
Оба направления — зеркальные отражения друг друга. Кодирование берёт исходный текст или двоичные данные и выдаёт строку Base64. Декодирование берёт строку Base64 и восстанавливает в точности исходные байты. Наш инструмент делает и то и другое прямо в браузере — всё, что вы вводите или вставляете, никогда не отправляется на сервер, так что операция полностью локальна и приватна. Это значит, что можно безопасно декодировать отлаживаемый токен или закодировать фрагмент для встраивания, не покидая страницы.
Для связанных преобразований смотрите наш инструмент URL-кодирования/декодирования для процентной кодировки или декодер JWT, когда нужно разобрать сегменты Base64 внутри токена. Найдёте их рядом с остальными инструментами разработчика.
Часто задаваемые вопросы
Base64 — это вид шифрования?
Нет. Base64 — это кодирование, а не шифрование. Оно не использует ключ и полностью обратимо для любого, поэтому никакой защиты не обеспечивает. Для защиты конфиденциальных данных используйте настоящее шифрование, например AES или RSA.
Почему Base64 увеличивает размер данных?
Base64 превращает каждые три байта входных данных в четыре символа на выходе, добавляя примерно 33% к объёму. Если выходные данные разбиты на строки фиксированной длины, переносы строк добавляют ещё несколько процентов.
Какие символы использует Base64?
Стандартный алфавит — 26 заглавных букв, 26 строчных букв, цифры от 0 до 9, а также знак плюса и слэш; знак равенства используется для дополнения в конце.
Можно ли безопасно хранить пароли в Base64?
Нет. Base64 только меняет внешний вид данных, но не ограничивает доступ к ним. Любой может мгновенно декодировать их. Пароли следует хешировать надёжным алгоритмом, а секреты — шифровать.
Этот инструмент Base64 приватен?
Да. Кодирование и декодирование происходят полностью в браузере. Ничто из того, что вы вводите, не загружается и не отправляется ни на какой сервер — данные остаются на вашем устройстве.
В чём разница между кодированием и декодированием?
Кодирование преобразует исходный текст или двоичные данные в строку Base64. Декодирование выполняет обратное — превращает строку Base64 в точно те же исходные байты. Это зеркальные операции.
