fork download
  1. import secrets
  2. import string
  3.  
  4. def generate_strong_password(length=12):
  5. """
  6. Генерирует криптографически стойкий пароль указанной длины.
  7. """
  8. # Определяем наборы символов
  9. letters = string.ascii_letters # Включает a-z и A-Z
  10. digits = string.digits # Включает 0-9
  11. special_chars = string.punctuation # Включает знаки препинания
  12.  
  13. # Объединяем все наборы символов
  14. all_characters = letters + digits + special_chars
  15.  
  16. # Проверяем, что длина пароля достаточна
  17. if length < 4:
  18. raise ValueError("Длина пароля должна быть не менее 4 символов для обеспечения сложности.")
  19.  
  20. # Гарантируем, что в пароле будет хотя бы по одному символу каждого типа
  21. password_list = []
  22. password_list.append(secrets.choice(letters))
  23. password_list.append(secrets.choice(digits))
  24. password_list.append(secrets.choice(special_chars))
  25.  
  26. # Генерируем остальные символы пароля
  27. for _ in range(length - 3):
  28. password_list.append(secrets.choice(all_characters))
  29.  
  30. # Перемешиваем список символов для обеспечения случайного порядка
  31. secrets.SystemRandom().shuffle(password_list)
  32.  
  33. # Объединяем символы в итоговую строку
  34. return "".join(password_list)
  35.  
  36. # Пример использования
  37. password_length = 20 # Вы можете изменить длину пароля здесь
  38. new_password = generate_strong_password(length=password_length)
  39. print(f"Сгенерированный пароль: {new_password}")
  40.  
Success #stdin #stdout 0.16s 19264KB
stdin
Standard input is empty
stdout
Сгенерированный пароль: |PRc{P@y;4MkH.k7T'D4