Для чего нужен Base64
Base64 превращает любые байты в текст, используя 64 безопасных символа: A–Z, a–z, 0–9, + и /. Каждые 3 байта (24 бита) становятся 4 символами по 6 бит, поэтому результат на треть больше исходных данных. Он существует потому, что многие каналы, включая электронную почту, JSON, XML, HTTP-заголовки и URL, могут передавать только текст, а сырые байты были бы повреждены или неверно интерпретированы.
- Возьмите 3 байта: 24 бита.
- Разбейте их на четыре группы по 6 бит (значения 0–63).
- Замените каждую группу соответствующим символом алфавита.
- Если длина входных данных не кратна 3, дополните последнюю группу нулевыми битами и добавьте один или два знака
=.
hi — это 0x68 0x69 = 01101000 01101001; перегруппированные как 011010 000110 1001(00) это 26, 6, 36 → aGk, плюс один = за недостающий байт: aGk=.
Стандартный и URL-safe
Символы + и / имеют особое значение в URL и именах файлов, поэтому RFC 4648 §5 определяет второй алфавит, который использует вместо них - и _, обычно без padding. JWT, токены OAuth и многие API используют эту форму «base64url». Декодер здесь принимает обе, с padding и без, и игнорирует переводы строк.
Это не шифрование
Base64 ничего не скрывает; любой может мгновенно его декодировать. Используйте его для передачи байтов, но никогда для их защиты. Если вы видите секрет, «закодированный» в Base64 в конфигурационном файле, считайте его открытым текстом.
Кодировка текста
Base64 работает с байтами, поэтому текст сначала нужно превратить в байты. Этот инструмент использует UTF-8 — именно её ожидают веб-API, JSON и почти всё современное ПО. Декодированный результат, не являющийся корректным UTF-8, показывается в hex вместо нечитаемых символов.
Вопросы
Почему мой Base64 заканчивается на = или ==?
Это padding. Длина входных данных не была кратна 3 байтам, поэтому последний блок дополнен. Один = означает, что в последней группе было два байта; == — что один. Многие декодеры принимают ввод без padding, а URL-safe вариант обычно его опускает.
Base64 безопасен?
Нет. Это кодирование, а не шифрование; любой может его обратить. Он защищает данные от искажения при передаче, а не от прочтения.
Насколько Base64 увеличивает файл?
Примерно на 33% (4 байта на выходе на каждые 3 байта на входе), плюс ещё до 3%, если строки переносятся для MIME.
Почему декодированный текст нечитаем?
Обычно данные вообще не были текстом (изображение, сжатый блоб), либо текст был в кодировке, отличной от UTF-8. Посмотрите на hex-представление: 89 50 4E 47 в начале — это PNG, 1F 8B — gzip, 25 50 44 46 — PDF.
Что такое data: URL?
URL, который содержит сам файл, например data:image/png;base64,iVBOR… Он позволяет встраивать небольшие изображения или шрифты прямо в HTML или CSS. Кодировщик выдаёт такой URL, когда вы перетаскиваете файл.
Этот инструмент загружает мой файл на сервер?
Нет. Файл читается JavaScript в вашем браузере и никуда не отправляется. Перезагрузите страницу — и он исчезнет.