Утилиты

Кодировщики и пароли

Base64, URL-encode, Punycode и генератор надёжных паролей.

Веб-утилиты для повседневных задач

Четыре частых инструмента собраны на одной вкладке: кодирование Base64, URL-encode для параметров ссылок, перевод доменов в Punycode и генератор паролей. Всё считается прямо в браузере, данные не покидают устройство.

Base64: кодирование, а не защита

Base64 переводит произвольные байты в 64 печатных знака латиницы плюс +, / и = для выравнивания. Придумали формат для почты: старые SMTP-серверы умели передавать только 7-битный текст и портили вложения. Сейчас он живёт в data-URI картинок, в JWT-токенах, в заголовке базовой авторизации.

Раскодировать Base64 может любой человек за 2 секунды. Ключа нет, алгоритм открыт, обратное преобразование однозначно. Строка cGFyb2xoMTIz выглядит загадочно ровно до первого декодирования. Никогда не прячьте так пароли и токены.

Второй момент касается размера. Кодирование раздувает объём примерно на 33%: три исходных байта дают четыре символа. Картинка на 40 КБ в виде data-URI весит около 54 КБ и перестаёт кэшироваться отдельно от HTML. Для иконки в 1–2 КБ такой обмен выгоден, для фотографии вреден.

Где нужен URL-encode

Адрес допускает ограниченный набор символов. Пробел, кириллица, кавычки, амперсанд внутри значения параметра ломают разбор ссылки, поэтому их заменяют на знак % и два шестнадцатеричных разряда. Пробел превращается в %20, амперсанд в %26.

Классическая ошибка выглядит так. UTM-метку собирают руками, в utm_campaign попадает значение «скидка 30% & подарок», и аналитика видит два параметра вместо одного. Знак процента стоит кодировать всегда: внутри незакодированного текста последовательность %20 читается парсером как пробел.

Кодировать нужно значение параметра, а не ссылку целиком. Если прогнать через encode готовый URL, слэши и двоеточие протокола тоже станут процентами, и адрес перестанет открываться. В UTM-метках эта путаница встречается регулярно.

Punycode и кириллические домены

DNS исторически понимает только латиницу, цифры и дефис. Домены вроде сайт.рф существуют благодаря надстройке IDN: каждая часть имени переводится в ASCII по алгоритму из RFC 3492 и получает префикс xn--. Так сайт.рф становится xn--80aswg.xn--p1ai.

Пользователю браузер показывает кириллический вид, а по сети уходит punycode-версия. Расхождение всплывает в неожиданных местах: в логах сервера, в отчётах рекламных систем, в поле SSL-сертификата, в конфигах nginx. Настраивая редирект или canonical, проверьте, какую из двух форм ждёт конкретная система.

Ещё деталь. Почту на кириллическом домене поддерживают не все провайдеры, и адрес вида pochta@сайт.рф часть сервисов отвергнет прямо на валидации формы.

Энтропия пароля: длина сильнее символов

Стойкость пароля меряют в битах энтропии. Формула короткая: длина умножается на двоичный логарифм размера алфавита. Пароль из 8 знаков со всеми наборами (94 символа) даёт 52 бита. Пароль из 16 строчных букв даёт 75 бит, и перебирать его придётся в 8 миллионов раз дольше.

Отсюда практический вывод. Добавить четыре знака к длине выгоднее, чем воткнуть в середину восклицательный знак. Длинный пароль вдобавок легче запоминается, если собран из случайных слов, а не из символьной каши.

Генератор на этой странице берёт случайность из crypto.getRandomValues, криптографического источника браузера. Из алфавита убраны похожие знаки: ноль и заглавная O, единица и строчная l. Пароль не уходит на сервер и не попадает в историю страницы.

Складывайте результат в менеджер паролей, а не в заметки телефона. Попытка запомнить 20-символьную строку заканчивается предсказуемо: её пишут на стикер либо переиспользуют сразу на десяти сайтах.

Как это применяется в работе с сайтом

Base64 чаще всего попадается в чужом коде. Тема WordPress прячет в него ссылку на сторонний домен, плагин зашивает так лицензионный ключ, а вредоносная вставка маскирует адрес своего сервера. Декодер отвечает на вопрос «что здесь вообще написано» за пару секунд.

URL-кодирование нужно каждый раз, когда вы собираете ссылку с параметрами: UTM-метки, значения фильтров каталога, внутренний поиск. Ошибка на этом шаге сливает половину рекламной кампании в один безымянный источник, и в отчёте это выглядит как провал креатива.

Punycode пригодится при настройке редиректов и при выпуске сертификата. В выгрузках реестров и в логах кириллические домены почти всегда лежат в ASCII-форме, поэтому сверять списки без конвертера бесполезно.

Частые вопросы

Что такое Punycode?

Это способ записи доменов с кириллицей латиницей: сайт.рф превращается в xn--80aswg.xn--p1ai. В таком виде домен хранят DNS и показывают некоторые сервисы. Инструмент переводит в обе стороны.

Пароли безопасно генерировать в браузере?

Да. Пароль создаётся локально с помощью криптостойкого генератора случайных чисел браузера и никуда не отправляется.

Чем Base64 отличается от шифрования?

Base64 — это кодирование, а не шифрование. Оно не защищает данные, а лишь представляет их в текстовом виде (например, для передачи в URL или в атрибутах). Раскодировать может любой.

Почему Base64 увеличивает размер данных?

Три исходных байта превращаются в четыре символа, то есть объём растёт примерно на 33%. Картинка на 40 КБ в виде data-URI весит около 54 КБ и перестаёт кэшироваться отдельно от HTML.

Какая длина пароля достаточна?

16 символов со смешанным алфавитом дают около 98 бит энтропии, этого хватает для почты и хостинга. Длина влияет на стойкость сильнее набора символов: 16 строчных букв надёжнее восьми знаков со спецсимволами.