Кодирование Base64: что это такое и когда использовать
Понятное руководство по Base64 — как оно работает, реальные сценарии применения и как бесплатно кодировать и декодировать строки в браузере.
Base64 встречается везде в веб-разработке — в JWT-токенах, data URI, вложениях электронной почты и API-аутентификации. Вот понятное объяснение того, что это такое, как работает и когда вам это действительно нужно.
Что такое Base64?
Base64 — это схема кодирования, которая преобразует двоичные данные (или любой текст) в строку из 64 печатаемых ASCII-символов: A–Z, a–z, 0–9, + и /. Символ = используется как заполнитель в конце.
Название происходит от того факта, что каждая цифра Base64 представляет 6 бит данных (2⁶ = 64). Три байта двоичных входных данных (24 бита) становятся четырьмя символами Base64 (4 × 6 = 24 бита).
Пример:
Входные данные: "Привет"
Base64: 0J/RgNC40LLQtdGC
Выходные данные Base64 примерно на 33% больше оригинала — оправданная замена, когда место назначения поддерживает только текст.
Реальные сценарии использования
1. Data URI в HTML и CSS
Вместо ссылки на внешний файл изображения можно встроить его напрямую:
<img src="data:image/png;base64,iVBORw0KGgo...">
Это устраняет HTTP-запрос для небольших изображений и иконок — полезно для контента выше линии сгиба, где каждая миллисекунда имеет значение.
2. Тела JSON API с двоичными данными
JSON поддерживает только текст. Для включения PDF, изображения или аудиоклипа в тело JSON закодируйте его в Base64:
{
"filename": "report.pdf",
"content": "JVBERi0xLjQK..."
}
3. HTTP Basic Authentication
Заголовок Authorization: Basic использует Base64:
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
Это username:password, закодированный в Base64. Обратите внимание: это не шифрование — любой может декодировать его. Всегда используйте HTTPS.
4. JWT-токены
JSON Web Tokens (JWT) используют Base64URL (URL-безопасный вариант, в котором + заменяется на -, а / на _) для разделов заголовка и полезной нагрузки. Вы можете декодировать часть полезной нагрузки любого JWT для чтения его утверждений — сигнатура обеспечивает защиту от подделки.
Base64 — это не шифрование
Это самое важное, что нужно помнить. Base64 — это кодирование, обратимое преобразование без секретного ключа. Любой инструмент (включая этот) может мгновенно декодировать строку Base64. Никогда не используйте Base64 для «скрытия» или «защиты» конфиденциальных данных.
Для реальной безопасности используйте:
- AES или ChaCha20 для симметричного шифрования
- RSA или ECDSA для асимметричных операций
- bcrypt, Argon2 или PBKDF2 для хэширования паролей
Как наш кодировщик обрабатывает Unicode
Функция btoa() в браузерах принимает только символы Latin-1. Для работы с эмодзи, кириллицей, иероглифами и другим текстом Unicode наш кодировщик Base64 использует TextEncoder для предварительного преобразования строки в байты UTF-8, а затем кодирует эти байты — это соответствует поведению серверных языков, таких как Python и Node.js.
Попробуйте Base64 кодировщик и декодировщик — кодируйте любой текст в Base64 или декодируйте любую строку Base64, бесплатно и конфиденциально, прямо в браузере.