Генератор паролей
Генерация надёжных паролей с настраиваемой длиной и типами символов
Исключить похожие символы, например 0O, 1lI
Что такое генератор паролей?
Генератор паролей создает случайные, трудно угадываемые пароли по выбранной длине и правилам символов. Хороший генератор использует криптографически стойкую случайность и добавляет прописные буквы, строчные буквы, цифры и символы только если целевая система их действительно принимает. Сильные пароли снижают риск словарных атак, перебора и credential stuffing, но не заменяют менеджер паролей, уникальный пароль для каждого аккаунта и многофакторную аутентификацию. Очень сложные пароли не стоит запоминать или повторно использовать; их нужно хранить безопасно. Для общих систем также важны правила ротации, владельца и доступа. Security-related результат нельзя оценивать отдельно: важны ключи, контекст, выбор алгоритма и доверенный источник.
Как использовать
Этапы генерации
- Выберите длину пароля (рекомендуется минимум 12 символов)
- Отметьте нужные типы символов: прописные, строчные, цифры, спецсимволы
- При необходимости исключите похожие символы, например 0O, 1lI
- Нажмите кнопку «Сгенерировать» и повторяйте, пока не получите подходящий вариант
Надёжность пароля
- Слабый: менее 8 символов или только один тип символов
- Средний: 8–11 символов, сочетание букв и цифр
- Хороший: 12–15 символов, несколько типов символов
- Надёжный: 16+ символов, все типы символов
Советы по безопасности
- Все пароли генерируются локально и никогда не передаются на серверы
- Используйте разные пароли для разных сайтов
- Используйте менеджер паролей для безопасного хранения
- Регулярно меняйте пароли для важных аккаунтов
- Не используйте личную информацию в паролях
Применение
Технический принцип
Генератор паролей извлекает случайность из crypto.getRandomValues(new Uint32Array(n)), который заполняет типизированный массив криптографически стойкими псевдослучайными значениями, получаемыми из энтропийного пула операционной системы (getrandom в Linux, BCryptGenRandom в Windows, SecRandomCopyBytes в macOS/iOS). Это CSPRNG согласно определению W3C Web Cryptography API — в отличие от Math.random(), который в V8 использует алгоритм xorshift128+ и явно документирован как некриптографический, предсказуемый по небольшой выборке выходных данных. Пул символов формируется из выбранных пользователем классов: прописные (26 букв A-Z), строчные (26 букв a-z), цифры (10 символов 0-9) и спецсимволы (32 символа из !@#$%^&*()_+-=[]{}|;:,.<>?), что даёт максимальный пул из 94 символов. Пользовательский набор символов или список исключений (включая фильтр неоднозначных символов, удаляющий i, I, l, L, 1, o, O, 0) дополнительно уточняют пул. Каждый символ пароля выбирается по формуле array[i] % pool.length, что даёт равномерное распределение, поскольку выходные данные CSPRNG равномерны на 32 битах, а смещение от взятия по модулю (|pool| не делит 2^32 нацело) пренебрежимо мало для пулов до 256 символов — смещение менее 0,00000006%, что значительно ниже любого практического порога. Надёжность пароля измеряется размером пространства поиска: для пула размером C и длины пароля L количество возможных паролей равно C^L. Энтропия в битах — log2(C^L) = L × log2(C). Для 16-символьного пароля со всеми четырьмя классами (C=94) это даёт 94^16 ≈ 4,4 × 10^31 комбинаций, или около 105 бит энтропии. При гипотетической скорости атаки 10^12 попыток в секунду (примерно пропускная способность крупного GPU-кластера против быстрого хеша вроде NTLM) полный перебор занял бы примерно 4,4 × 10^19 секунд — значительно дольше возраста Вселенной. Эта модель предполагает, что атакующий должен проверить каждую комбинацию (без словарных или шаблонных упрощений) и что пароль хешируется медленным алгоритмом с солью, таким как bcrypt или Argon2id, а не хранится в открытом виде. NIST SP 800-63B рекомендует минимум 8 символов для пользовательских паролей и не менее 6 случайно сгенерированных символов для автоматически созданных учётных данных с документированным набором символов. Диапазон длины генератора 4–64 символа охватывает всё — от PIN-кодов до высокэнтропийных машинных учётных данных. Опция «начинать с буквы» гарантирует, что первый символ берётся из [A-Za-z], что удовлетворяет устаревшим системам, требующим начала пароля с буквы.
- Источник CSPRNG: crypto.getRandomValues() получает энтропию из CSPRNG ядра ОС (getrandom/BCryptGenRandom/SecRandomCopyBytes) — в отличие от Math.random() (xorshift128+), он непредсказуем, не может быть инициализирован страницей и пригоден для генерации учётных данных.
- Математика символьного пространства: при включении всех четырёх классов размер пула составляет 94; энтропия на символ — log2(94) ≈ 6,55 бит. 16-символьный пароль несёт ~105 бит энтропии; удвоение длины до 32 повышает это до ~210 бит.
- Выбор по модулю: array[i] % pool.length отображает 32-битный выход CSPRNG в индекс символа — смещение менее 6 × 10^-8 % для пулов до 256 символов, что криптографически незначимо.
- Модель устойчивости к перебору: при 10^12 попыток/сек (масштаб GPU-кластера) 16-символьный пароль из 94 символов потребует ~10^19 секунд для исчерпания — но это предполагает быстрый хеш; bcrypt с cost factor 12 снижает скорость атакующего до ~10^4 попыток/сек, делая устойчивыми даже 8-символьные пароли.
- Исключение неоднозначных символов: фильтр удаляет {i, I, l, L, 1, o, O, 0} (8 символов) — это уменьшает пул с 94 до 86, что стоит примерно 0,6 бит энтропии на символ, что приемлемо для повышения удобства при ручном вводе.
- Соответствие NIST SP 800-63B: стандарт требует минимум 6 случайно выбранных символов для автоматически создаваемых секретов и рекомендует документировать символьное пространство — пресеты генератора (Простой 8 символов, Надёжный 20 символов) соответствуют разным уровням гарантии.
- История в localStorage: последние 10 сгенерированных паролей сохраняются в window.localStorage, который привязан к origin и профилю браузера — очистка истории удаляет их из хранилища, но инструмент анализа диска может восстановить их, поскольку localStorage хранится как текстовая SQLite-база данных в каталоге профиля браузера.
Примеры
Надёжный пароль (смешанные классы символов)
Kx9#mP2$vL7@nQ4! - 16 символов, все четыре класса (верхний/нижний регистр/цифры/символы)
Стойкость: чрезвычайно высокая; даже при 10 миллиардах попыток в секунду полный перебор займёт векаPIN-код (4 цифры)
8527 - 4 цифры
Стойкость: 10 000 комбинаций; подходит только для разблокировки устройств с ограничением частоты и блокировкой, не для онлайн-аккаунтовСравнение стойкости паролей
8 симв., только нижний регистр : 26^8 ≈ 2.08e11 комбинаций
8 симв., смешанные классы : 94^8 ≈ 6.10e15 комбинаций
16 симв., смешанные классы : 94^16 ≈ 3.7e31 комбинаций
Примечание: каждый дополнительный символ умножает пространство ключей на 94, а не на 8 - длина важнее количества классовЧасто задаваемые вопросы
Пароль генерируется в моём браузере?
Да. Страница использует crypto.getRandomValues из Web Crypto API, который выдаёт криптографически стойкие случайные байты. Пароль не покидает ваше устройство, не журналируется и не выводится из детерминированного зерна. Обновите страницу, чтобы начать новую последовательность энтропии, если хотите перестраховаться.
Какую длину и набор символов выбрать?
Для онлайн-аккаунтов современный минимум — 16+ символов с заглавными, строчными буквами, цифрами и спецсимволами. Для мастер-паролей (менеджер паролей, ключи шифрования) безопаснее 20+ символов или парольная фраза из 6-7 слов. Длина важнее сложности набора символов начиная с определённого уровня.
Почему некоторые сайты отвергают только что сгенерированный пароль?
Некоторые сайты до сих пор навязывают неожиданные ограничения: максимальная длина (часто 12-20), запрет на спецсимволы, только определённые разрешённые символы или запрет пробелов. Страница позволяет переключать наборы символов, чтобы подстроиться под правила. Жалуйтесь на такие сайты — подобные политики активно ослабляют безопасность.
Намеренно ли исключаются некоторые символы?
Если включить опцию «исключать похожие символы», генератор уберёт пары вроде 0/O, 1/l/I и другие, которые легко спутать при копировании с бумаги или стикера. Отключайте её для максимальной энтропии, когда пароль будет использоваться только в цифровом виде.
Длинный случайный пароль безопаснее парольной фразы?
При равной энтропии оба одинаково устойчивы к брутфорсу. Смешанный 16-символьный пароль примерно эквивалентен парольной фразе из 6 случайных слов из словаря на 2000 слов. Парольные фразы проще набирать и запоминать; чисто случайные строки удобнее вставлять из менеджера. Выбирайте по сценарию использования.
Можно ли доверять этому для мастер-ключей менеджера паролей?
Да — источник случайности тот же Web Crypto API, который браузер использует для ключей HTTPS. Тем не менее для секретов с предельно высокими ставками (мастер-ключи, коды восстановления) часто предпочитают бросать кости (diceware) или использовать офлайн-инструмент, чтобы вообще убрать браузер из цепочки доверия.
Стоит ли хранить сгенерированный пароль здесь?
Нет. Страница не сохраняет пароли; немедленно скопируйте его в менеджер паролей (1Password, Bitwarden, KeePass, встроенный менеджер браузера). Закрытие страницы или обновление окончательно стирает его.