Добавить в корзинуПозвонить
Найти в Дзене

Создание генератора паролей на Python

Привет! Давай разберёмся, как сделать простой и надёжный генератор паролей на Python. Мы будем использовать код, который мы уже улучшали ранее, но объясним всё понятными словами и добавим комментарии прямо в коде. import secrets
import string
def generate_password(length: int) -> str:
"""
Генерирует случайный пароль заданной длины.
Аргументы:
- length: целое положительное число — длина пароля.
Возвращает:
- строку, состоящую из латинских букв (верхний/нижний регистр),
цифр и знаков препинания.
"""
if length <= 0:
raise ValueError("Длина пароля должна быть положительным числом.")
# Полный набор допустимых символов для пароля
all_symbols = string.ascii_letters + string.digits + string.punctuation
# Генерируем пароль из случайных символов, используя безопасный генератор
return "".join(secrets.choice(all_symbols) for _ in range(length))
def main() -> None:
"""
Основная точка входа программы:
- запрашивает длин
Оглавление

Привет! Давай разберёмся, как сделать простой и надёжный генератор паролей на Python. Мы будем использовать код, который мы уже улучшали ранее, но объясним всё понятными словами и добавим комментарии прямо в коде.

Что именно мы делаем

  • Запрашиваем у пользователя желаемую длину пароля.
  • Собираем полный набор символов: латинские буквы (верхний и нижний регистр), цифры и знаки препинания.
  • Генерируем пароль с помощью безопасного генератора случайных чисел.
  • Выводим итоговый пароль и обрабатываем ошибки ввода.

Почему это безопасно

  • Мы применяем модуль Секреты для выборки случайных символов, потому что он предназначен для криптографически безопасных задач.
  • Никаких угадываний — каждый символ подбирается независимо и случайно.

Версия кода с комментариями

import secrets
import string

def generate_password(length: int) -> str:
"""
Генерирует случайный пароль заданной длины.

Аргументы:
- length: целое положительное число — длина пароля.

Возвращает:
- строку, состоящую из латинских букв (верхний/нижний регистр),
цифр и знаков препинания.
"""
if length <= 0:
raise ValueError("Длина пароля должна быть положительным числом.")

# Полный набор допустимых символов для пароля
all_symbols = string.ascii_letters + string.digits + string.punctuation

# Генерируем пароль из случайных символов, используя безопасный генератор
return "".join(secrets.choice(all_symbols) for _ in range(length))

def main() -> None:
"""
Основная точка входа программы:
- запрашивает длину пароля у пользователя
- валидирует ввод
- выводит сгенерированный пароль
- обрабатывает ошибки ввода
"""
print("Длина пароля?")

try:
# Считываем ввод и приводим к целому числу
length = int(input().strip())

# Генерируем пароль
password = generate_password(length)

# Выводим результат
print(password)
except ValueError as e:
# Подсказка пользователю в случае неверного ввода
print(f"Ошибка ввода: {e}")

if __name__ == "__main__":
main()

Немного про стиль и расширяемость

  • В коде есть явная валидация: если длина неверная, выдаётся понятная ошибка.
  • Логика разделена на функции, так что можно легко добавить новые фичи.

Варианты расширения (коротко)

  • Исключение похожих символов: можно создать вариант набора символов без O, 0, l, 1.
  • Гарантированное присутствие классов: добавить по одному символу из каждого класса.
  • Конфигурация набора символов через параметры или файл конфигурации.
  • Копирование пароля в буфер обмена (с учётом кросс-платформенности).

Как начать

  • Установи Python 3.x.
  • Сохрани код в файл, например password_generator.py.
  • Не забудь добавить отступы
  • Запусти: python password_generator.py
  • Введи желаемую длину пароля, например 12.

Пример вывода

  • Ввод: 12
  • Вывод: aP3!k9$Bq2#Ld