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 (безопасный вариант для ссылок, где + и / заменены на - и _).