В этой статье
Что такое Base64?
Base64 — это схема кодирования, которая преобразует двоичные данные в строку ASCII-символов. Для представления любых двоичных данных используется 64 безопасных символа (A-Z, a-z, 0-9, +, /), что позволяет безопасно передавать их через текстовые протоколы: HTTP-заголовки, электронную почту (MIME) и JSON.
Base64 — это не шифрование, а кодирование. Любой человек может декодировать Base64 обратно в исходные данные без какого-либо ключа. Цель Base64 — позволить двоичным данным проходить через системы, предназначенные для текста, а не обеспечивать безопасность.
Как работает кодирование Base64
Base64 преобразует каждую группу из 3 байт (24 бита) в 4 символа Base64 (по 6 бит каждый), добавляя символы = для выравнивания, если размер входных данных не кратен 3.
- Группировка байт — входные байты объединяются по 3 и преобразуются в 4 выходных символа
- Таблица символов — каждая 6-битная группа соответствует одному из 64 печатаемых ASCII-символов
- Выравнивание — символы = добавляются для обеспечения длины вывода, кратной 4
Попробуйте бесплатно — без регистрации
Кодировать или декодировать Base64 →Когда использовать Base64
Base64 применяется везде, где двоичные данные нужно встроить в текстовые форматы.
- Вложения электронной почты — MIME-кодирование использует Base64 для прикрепления двоичных файлов к письмам
- Data URI — встраивайте изображения прямо в HTML/CSS как data:image/png;base64,... чтобы избежать лишних HTTP-запросов
- API-аутентификация — учётные данные Basic Auth кодируются в Base64 в HTTP-заголовке Authorization
Частые вопросы
Увеличивает ли Base64 размер данных?
Да. Кодирование Base64 увеличивает размер примерно на 33%, потому что каждые 3 байта входных данных дают 4 байта на выходе. Это неизбежный компромисс при обеспечении безопасной передачи двоичных данных через текстовые протоколы.
В чём разница между стандартным Base64 и URL-безопасным Base64?
Стандартный Base64 использует символы + и /, которые имеют специальное значение в URL. URL-безопасный Base64 (Base64url) заменяет + на - и / на _, что позволяет использовать строки в URL и именах файлов без процентного кодирования. JWT используют именно кодировку Base64url.
Как обрабатывать Base64 с данными, отличными от UTF-8?
Base64 работает с сырыми байтами, а не с текстом. При кодировании двоичных данных, например изображений или зашифрованного содержимого, обращайтесь с ними как с массивом байт, а не со строкой. В JavaScript используйте Uint8Array или Buffer; в Python — объекты bytes, чтобы избежать проблем кодирования с данными, отличными от UTF-8.