Консольное приложение на Python для генерации криптографически стойких паролей с многофакторным анализом надежности, фильтрацией неоднозначных символов и адаптивной системой персональных рекомендаций.
Проект разработан в рамках конкурса «Талант НТО».
Проект решает задачу генерации энтропийно-устойчивых паролей, исключающих предсказуемость. Алгоритм спроектирован с учетом стандартов NIST и рекомендаций OWASP по формированию парольных политик.
В отличие от стандартного модуля random (использующего генератор псевдослучайных чисел Вихрь Мерсенна, уязвимый к восстановлению состояния), данный проект строго использует модуль secrets. Метод secrets.choice() опирается на криптографически стойкий системный источник случайных чисел (CSPRNG), что делает генерируемые пароли устойчивыми к атакам предсказания.
Код имеет модульную структуру (Low Coupling, High Cohesion). Бизнес-логика полностью изолирована от процессов ввода-вывода (input/print локализованы внутри функции main):
build_char_pool— чистая функция формирования пула доступных символов с валидацией граничных состояний.generate_password— атомарная функция генерации парольной строки.estimate_strength— аналитический блок оценки сложности.get_advice— эвристический экспертный модуль.
Сложность пароля вычисляется на основе динамического скоринга:
-
Длина пароля: Дифференцированное начисление баллов (до +4 баллов за длину
$\ge 16$ символов). -
Разнообразие алфавита: Оценка присутствия строчных, прописных букв, цифр и спецсимволов (
string.punctuation) — до +4 баллов. -
Защита от частотного анализа: Модуль использует класс
Counterиз библиотекиcollectionsдля выявления монотонных повторений символов (если один символ занимает более 50% длины, рейтинг пароля штрафуется на -2 балла).
Реализован алгоритм очистки пула символов от визуально похожих глифов (набор il1Lo0O), что предотвращает ошибки человека при ручном вводе сгенерированного пароля.
Итоговый ранг пароля (слабый, средний, сильный, очень сильный) определяется по формуле:
На основе полученного балла функция get_advice генерирует индивидуальный список действий для пользователя по усилению безопасности.
- Язык: Python 3.8+
- Стандартная библиотека (без внешних зависимостей):
secrets,string,collections.Counter
-
Клонируйте репозиторий:
git clone https://github.com cd secure-password-generator -
Запустите скрипт через консоль:
python main.py
- Качество кода: Полное соответствие PEP 8, понятный именинг переменных, обработка исключений (
try-except ValueError) для предотвращения падения программы при некорректном вводе пользователя. - Безопасность: Отсутствие уязвимых библиотек, использование CSPRNG, строгая фильтрация пустых пулов данных.