import secrets
import string
def generate_strong_password(length=12):
"""
Генерирует криптографически стойкий пароль указанной длины.
"""
# Определяем наборы символов
letters = string.ascii_letters # Включает a-z и A-Z
digits = string.digits # Включает 0-9
special_chars = string.punctuation # Включает знаки препинания
# Объединяем все наборы символов
all_characters = letters + digits + special_chars
# Проверяем, что длина пароля достаточна
if length < 4:
raise ValueError("Длина пароля должна быть не менее 4 символов для обеспечения сложности.")
# Гарантируем, что в пароле будет хотя бы по одному символу каждого типа
password_list = []
password_list.append(secrets.choice(letters))
password_list.append(secrets.choice(digits))
password_list.append(secrets.choice(special_chars))
# Генерируем остальные символы пароля
for _ in range(length - 3):
password_list.append(secrets.choice(all_characters))
# Перемешиваем список символов для обеспечения случайного порядка
secrets.SystemRandom().shuffle(password_list)
# Объединяем символы в итоговую строку
return "".join(password_list)
# Пример использования
password_length = 20 # Вы можете изменить длину пароля здесь
new_password = generate_strong_password(length=password_length)
print(f"Сгенерированный пароль: {new_password}")