Кодировщики и пароли
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 миллионов раз дольше.
Отсюда практический вывод. Добавить четыре знака к длине выгоднее, чем воткнуть в середину восклицательный знак. Длинный пароль вдобавок легче запоминается, если собран из случайных слов, а не из символьной каши.
- Меньше 50 бит: перебирается на арендованной видеокарте за считанные часы.
- От 60 до 70 бит: разумный минимум для рядового аккаунта.
- От 80 бит: почта, банк, доступ к хостингу, панель управления сайтом.
Генератор на этой странице берёт случайность из 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 строчных букв надёжнее восьми знаков со спецсимволами.