Преобразование Base64 объяснено Что это такое, что это не так, и когда его использовать
Если вы когда-либо видели стену букв как SGVsbG8gV29ybGQ= и предположили, что она зашифрована — вы не единственные. Base64 — один из самых непонятных инструментов в арсенале разработчика. нет шифрование. Оно не защищает ваших данных. Оно лишь делает бинарные данные безопасными для перемещения через текстовые системы.
Что такое Base64 на самом деле
Баз64 — это схема кодирования, преобразующая бинарные данные в строку из 64 печатаемых символов АЗаяЦ09. +и /Название происходит от размера этого набора символов — 64 символа, каждый из которых представляет собой 6 бит данных.
Каждые три байта входных данных (24 бита) соответствуют четырём символам Base64 (4 × 6 бит = 24 бита). Если длина ввода не делится на 3, = Заполнительные символы заполняют последний набор. Вот почему часто можно увидеть один или два равенства в конце строки Base64.
Почему он существует
Некоторые каналы были построены исключительно для текстовых данных. Старые протоколы электронной почты (SMTP), HTTP-заголовки, JSON-пайлоты и атрибуты HTML имеют ограничения на то, какие байты они могут передавать без неправильной интерпретации. Файл с бинарным содержимым, прошедший через такие каналы, может быть повреждён — нулевые байты удалены, символы новой строки преобразованы, контрольные символы вызывают неожиданное поведение.
Base64 обходит все это. Преобразуя бинарные данные в предсказуемый набор печатных символов, вы можете безопасно встраивать изображения в CSS-данные URI, прикреплять файлы к электронным письмам, помещать токены в HTTP-заголовки и включать бинарные payload внутри JSON. Потери: закодированные данные примерно в 33% раз больше исходных.
Как работает кодировка (краткий вариант)
Возьмите строку ManВ аск-кодировке: 77 97 110В двоичном коде: 01001101 01100001 01101110Разделите на группы по 6 бит: 010011 010110 000101 101110Создайте отображение каждой буквы на алфавит Base64: T W F u → TWFu.
Отстающие байты начинают влиять на отображение после определенного количества данных. Один оставшийся байт создает два символа Base64 плюс ==Два оставшихся байта дают три символа плюс =.
Базовый 64 не является безопасностью
Это нужно повторить ещё раз. Base64 обратимый для любого человека с декодером — ни ключа не требуется, ни пароля. Использование его для «скрытия» паролей, токенов или чувствительных данных в коде клиента обеспечивает нулевую защиту. Атакующие знают, что такое Base64. Последняя = дарительский розыгрыш
Если вам нужно защитить данные в состоянии покоя, используйте правильное шифрование (AES-256). Если требуется защита данных в пути, используйте TLS. Base64 — это удобство транспортировки, а не слой безопасности.
Когда использовать Base64
- URL-адреса данных встраивайте изображения напрямую в HTML или CSS:
src="data:image/png;base64,iVBOR..." - Базовый аутентификационный заголовок — Аутентификация базовой строки (Basic Auth) кодирует
username:passwordв кодировке Base64Authorizationзаголовок (ещё требует HTTPS для реальной безопасности) - Токены JWT — Токены JSON Web Token используют Base64URL для кодирования секций заголовка и загрузки.
- Пayloadы в формате JSON/XML — когда API или формат сообщения говорит только текстом
- Вложения электронной почты — Кодировка MIME использует Base64 для бинарных частей файлов
Для быстрой кодировки и декодировки в вашем браузере. Энкодер/декодер на основе Base64 для IO Tools обрабатывает как стандартные, так и безопасные для URL варианты без установки ничего.
Энкодирование и декодирование на практике
Питон
import base64
# Encode
encoded = base64.b64encode(b"Hello, World!")
print(encoded) # b'SGVsbG8sIFdvcmxkIQ=='
# Decode
decoded = base64.b64decode(b"SGVsbG8sIFdvcmxkIQ==")
print(decoded) # b'Hello, World!'
Bash
# Encode
echo -n "Hello, World!" | base64
# SGVsbG8sIFdvcmxkIQ==
# Decode
echo "SGVsbG8sIFdvcmxkIQ==" | base64 --decode
# Hello, World!
ЯваСкрипт (браузер и Node.js)
// Encode (browser)
const encoded = btoa("Hello, World!");
console.log(encoded); // SGVsbG8sIFdvcmxkIQ==
// Decode (browser)
const decoded = atob("SGVsbG8sIFdvcmxkIQ==");
console.log(decoded); // Hello, World!
// Node.js
const enc = Buffer.from("Hello, World!").toString("base64");
const dec = Buffer.from(enc, "base64").toString("utf8");
Примечание: btoa и atob только обрабатывайте символы латиницы в браузерах. Для строк с Юникодом сначала преобразуйте их в байтовую представление. TextEncoder.
Стандартный против URL-безопасного Base64
Базовая кодировка Base64 использует + и / — оба символа с особым значением в URL и строках запросов. Безопасный для URL Base64 заменяет их, чтобы избежать проблем кодировки:
| Свойство | Базовая система Base64 | Базовый 64 в безопасном URL-формате |
|---|---|---|
| Система кодировки | А–З, а–з, 0–9,
Буквы алфавита и цифры от нуля до девяти. +, / | А–З, а–з, 0–9,
Буквы алфавита и цифры от нуля до девяти. -, _ |
| Прокладка | = Обязательно | = (часто опускается) |
| Совместимый с URL? | Нет + и / должно быть кодированным в процентах | Да — безопасно в URL и именах файлов |
| Общественное использование | Электронная почта, MIME, общая кодировка | Токены JWT, OAuth, параметры URL |
В Python используйте base64.urlsafe_b64encode() для безопасного вывода по URL. В частности, JWT удаляет завершающий символ = Отступы — это нормально, так как декодер может вывести их из длины строки.
Практическое понимание
Баз64 решает конкретную, хорошо определённую задачу: передача бинарных данных через текстовые каналы без искажений. Она выполняет эту работу отлично. Баз64 не защищает данные, не сжимает их и не проверяет их корректность. Когда вам нужно кодировать/декодировать данные в баз64 — будь то изображение, токен или бинарный блок — теперь вы знаете точно, что делаете и зачем. Используйте правильный инструмент для правильной задачи, и обращайтесь к шифрованию только тогда, когда безопасность действительно является целью.
Вам также может понравиться
Установите наши расширения
Добавьте инструменты ввода-вывода в свой любимый браузер для мгновенного доступа и более быстрого поиска
恵 Табло результатов прибыло!
Табло результатов — это интересный способ следить за вашими играми, все данные хранятся в вашем браузере. Скоро появятся новые функции!
Подписаться на новости
все Новые поступления
всеОбновлять: Наш последний инструмент был добавлен на **апрель** 16, 2026
