+ на -, / на _ и удаляет заполнение = (RFC 4648 §5).Как это работает
Base64 представляет данные с помощью 64 печатаемых символов ASCII. Каждые 3 входных байта становятся 4 символами, поэтому результат занимает примерно на 33 % больше, чем оригинал.
Это не шифрование и не сжатие: это обратимое кодирование, которое может декодировать любой. Оно служит для передачи двоичных данных по каналам, предназначенным только для текста.
URL-безопасный вариант (RFC 4648 §5) использует - и _ вместо + и / и опускает заполнение =, чтобы результат можно было включать в URL и имена файлов без экранирования.
Примеры
Hello WorldSGVsbG8gV29ybGQ=CaféQ2Fmw6k=В UTF-8 символы вне ASCII занимают более одного байта, поэтому «é» добавляет два байта.>>>?estándar: Pj4+Pw== · URL-safe: Pj4-PwURL-безопасный вариант заменяет + и / на - и _ и убирает заполнение =.Сценарии использования
- Встраивать изображения, шрифты или значки прямо в HTML/CSS через data URI.
- Отправлять вложения электронной почты (MIME) или двоичные данные внутри JSON.
- Хранить ключи, сертификаты или токены в переменных окружения и файлах конфигурации.
- Кодировать учётные данные для HTTP-заголовка Authorization: Basic.
Часто задаваемые вопросы
Является ли Base64 методом шифрования?
Нет. Это обратимое кодирование без ключа: его может декодировать кто угодно. Оно не даёт никакой защиты; чтобы защитить данные, их нужно шифровать.
Почему результат заканчивается на «=»?
«=» — это заполнение (padding), чтобы дополнить блоки из 4 символов, когда вход не кратен 3 байтам. URL-безопасный вариант его опускает.
Когда предпочтителен URL-безопасный вариант?
Когда значение помещается в URL, имя файла или идентификатор, потому что символы + и / имеют особое значение в этих контекстах.
Почему закодированный текст длиннее оригинала?
Потому что он использует 4 символа на каждые 3 входных байта, поэтому размер растёт примерно на 33 %.
Загружается ли мой текст на сервер?
Нет. Кодирование и декодирование происходят полностью в браузере.