Пароль создаётся автоматически при загрузке страницы и при любом изменении настроек.
Что делает пароль надёжным
Пароль сложнее подобрать методом перебора, когда в нём больше символов и они выбраны по-настоящему случайно — а не по шаблону вроде «Имя+ГодРождения» или последовательности «12345». Каждый дополнительный символ и каждый дополнительный тип символов (заглавные буквы, цифры, спецсимволы) кратно увеличивает число вариантов, которые нужно перебрать, чтобы угадать пароль.
Инструмент по умолчанию гарантирует, что в пароль попадёт хотя бы один символ каждого выбранного типа — если включены заглавные буквы, цифры и символы, все три типа окажутся в результате на практике, а не только в теории. Порядок символов при этом каждый раз перемешивается случайно, а не идёт предсказуемым блоком.
Честно: сам по себе сложный пароль не защищает от фишинга (когда пароль вводят на подделанном сайте), от утечки базы данных сервиса, где пароль хранился в открытом виде, или от повторного использования одного и того же пароля на разных сайтах. Генератор решает только одну конкретную задачу — создаёт случайный, не угадываемый набор символов. Остальное — уникальный пароль для каждого сервиса, менеджер паролей, двухфакторная аутентификация — зависит от того, как вы его используете.
Частые вопросы
Пароль отправляется на сервер или сохраняется где-то? Нет — весь пароль генерируется прямо в браузере через встроенный криптографический генератор случайных чисел (Web Crypto API). Ни пароль, ни его части никуда не передаются. В localStorage сохраняются только настройки (длина, включённые типы символов) — сам пароль там не хранится.
Почему для случайности используется crypto.getRandomValues, а не обычный Math.random? Math.random() в браузерах не считается криптографически стойким — его генератор псевдослучаен и в теории предсказуем. Для пароля это неприемлемо, поэтому используется crypto.getRandomValues() — источник случайности, применяемый в криптографии браузера.
Можно ли использовать один и тот же пароль на нескольких сайтах? Не стоит. Если у одного из сервисов произойдёт утечка данных, тот же пароль попробуют на других сайтах (credential stuffing) — и под угрозой окажутся сразу все аккаунты с этим паролем. Генерируйте отдельный пароль для каждого сервиса, для хранения — менеджер паролей.
Сервис, где я регистрируюсь, не принимает сгенерированный пароль — что делать? Некоторые сайты ограничивают допустимые символы или максимальную длину пароля. Снимите галочку «Символы» и сгенерируйте пароль из букв и цифр, либо уменьшите длину — большинство отказов связаны именно с этим.
Насколько точна оценка «стойкости» под полем с паролем? Это приблизительная оценка на основе длины и размера набора символов (энтропия в битах), а не гарантия защиты. Она не учитывает утечку базы сервиса, повторное использование пароля или фишинг — от этого генератор защитить не может.