Пароль без спецсимволов: длиной вместо знаков
Без спецсимволов алфавит сжимается до 62 знаков — цифры и буквы обоих регистров, 6 бита на символ вместо 6,4 у полного набора. Длиной 20 это компенсируется: 119,1 бит, уровень «Очень сильный». Те же 119,1 бит даёт пароль из 16 знаков полного набора. Если сайт не принимает «!» и «#», длину просто добирают: каждый дополнительный символ возвращает 6 бита.
Длина против стойкости: только буквы и цифры
| Длина | Биты энтропии | Оценка | Время перебора |
|---|---|---|---|
| 10 | 59,5 | Нормальный | 1,3 год |
| 12 | 71,5 | Сильный | 5,3 тыс. лет |
| 14 | 83,4 | Очень сильный | 20,2 млн лет |
| 16 | 95,3 | Очень сильный | 77,3 млрд лет |
| 18 | 107,2 | Очень сильный | 295,3 трлн лет |
| 20 | 119,1 | Очень сильный | практически вечно |
| 24 | 142,9 | Избыточный | практически вечно |
Рассчитано по методике инструмента «Генератор паролей: длина, набор символов, стойкость».
Как считаем
Энтропия = длина × log2(размер алфавита). Для слогового режима считается иначе: энтропия = слоги × log2(согласные × гласные) + log2(10) за цифру + log2(24) за спецсимвол. Ориентировочное время полного перебора = 2^(биты − 1) ÷ 10^10 секунд: в среднем ключ находится в середине пространства, а 10^10 попыток в секунду — скорость подбора на нескольких видеокартах.
Ограничения и допущения
- Оценка энтропии предполагает равномерный случайный выбор из алфавита. Инструмент гарантирует по одному символу каждого включённого набора, поэтому реальная энтропия чуть ниже расчётной — на длине от 12 символов разница несущественна.
- Время перебора — грубая оценка при 10^10 попыток в секунду. Настоящая скорость зависит от того, как сервис хеширует пароль: MD5 подбирается быстрее, bcrypt или Argon2 — в тысячи раз медленнее.
- Ни один генератор не спасает от повторного использования пароля и от фишинга: уникальный пароль на каждый сервис и менеджер паролей важнее лишних десяти бит.
- Криптостойкость случайности опирается на crypto.getRandomValues — единственный пригодный для паролей источник в браузере. Math.random() для паролей не используется.