Base64 — что это?
Base64 — это не шифрование, а способ кодирования бинарных данных (картинок, файлов) в текстовый формат, состоящий из 64 символов ASCII. Это нужно, чтобы передавать данные по протоколам, которые понимают только текст (например, JSON, HTML, email).
Как это работает (суть)
Берутся 3 байта исходных данных (24 бита) и разбиваются на 4 группы по 6 бит. Каждая группа (число от 0 до 63) заменяется на символ из таблицы:
· A–Z (0–25)
· a–z (26–51)
· 0–9 (52–61)
· + (62) и / (63)
Важный нюанс: если исходных данных не хватает для ровного деления на 3, в конце добавляется символ = (паддинг), обозначающий, сколько байтов не хватает.
Простой пример
Слово Man (3 байта) кодируется в TWFu.
А картинка 1x1 пиксель (прозрачный PNG) выглядит как:
iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg==
Где применяется
· Data URI — вставка мелких картинок прямо в CSS/HTML (data:image/png;base64,...).
· JWT-токены — три части токена разделены точками и закодированы в Base64.
· Вложения в письмах (MIME) — чтобы серверы не сломали двоичные файлы.
· Передача файлов в JSON (API), когда бинарные данные нужно положить в текстовое поле.
Минусы
Размер данных увеличивается на ~33% (3 байта → 4 байта), так как 6 бит несут меньше информации, чем 8.
⚠ Важно: Base64 не обеспечивает безопасность! Это просто транслитерация. Если вы закодируете пароль, любой сможет его декодировать обратно (декодер есть в любом браузере через atob()).
---
Если интересно, могу показать, как закодировать/раскодировать текст вручную через биты, или рассказать про Base64URL (безопасный вариант для ссылок, где + и / заменены на - и _).