generator_password
/
main.py
131 строка · 6.9 Кб
1import random2import string3import re4import hashlib5import base646
7# Функция для генерации случайного пароля
8def generate_password(length=12, use_digits=True, use_upper=True, use_special=True):9characters = string.ascii_lowercase # Буквы нижнего регистра10if use_upper:11characters += string.ascii_uppercase # Добавляем заглавные буквы12if use_digits:13characters += string.digits # Добавляем цифры14if use_special:15characters += string.punctuation # Добавляем специальные символы16
17password = ''.join(random.choice(characters) for _ in range(length))18return password19
20# Функция для проверки надежности пароля с использованием регулярных выражений
21def check_password_strength(password):22length_check = len(password) >= 823digit_check = re.search(r"\d", password) is not None24upper_check = re.search(r"[A-Z]", password) is not None25special_check = re.search(r"[@$!%*?&#]", password) is not None26return length_check and digit_check and upper_check and special_check27
28# Функция для шифрования пароля
29def encrypt_password(password, method):30if method == "SHA256":31return hashlib.sha256(password.encode()).hexdigest()32elif method == "MD5":33return hashlib.md5(password.encode()).hexdigest()34elif method == "Base64":35return base64.b64encode(password.encode()).decode()36else:37raise ValueError("Неизвестный метод шифрования!")38
39# Доступные методы шифрования
40encryption_methods = {41"1": "SHA256",42"2": "MD5",43"3": "Base64"44}
45
46# Запрос на ввод пароля пользователем или его генерацию
47def get_user_password():48choice = input("Хотите сгенерировать пароль автоматически? (да/нет): ").lower()49if choice == 'да':50length = int(input("Введите длину пароля (по умолчанию 12): ") or 12)51use_digits = input("Использовать цифры? (да/нет, по умолчанию да): ").lower() != 'нет'52use_upper = input("Использовать заглавные буквы? (да/нет, по умолчанию да): ").lower() != 'нет'53use_special = input("Использовать специальные символы? (да/нет, по умолчанию да): ").lower() != 'нет'54return generate_password(length=length, use_digits=use_digits, use_upper=use_upper, use_special=use_special)55else:56return input("Введите свой пароль: ")57
58# Основная программа
59password = get_user_password()60print(f"\nВаш пароль: {password}")61
62# Проверка надежности пароля
63if check_password_strength(password):64print("Пароль надежен.")65else:66print("Пароль недостаточно надежен. Рекомендуется использовать более сложный пароль.")67
68# Выбор метода шифрования пользователем
69print("\nВыберите метод шифрования:")70print("1: SHA256")71print("2: MD5")72print("3: Base64")73
74choice = input("Введите номер метода шифрования (1, 2 или 3): ")75
76if choice in encryption_methods:77selected_method = encryption_methods[choice]78encrypted_password = encrypt_password(password, method=selected_method)79print(f"\nЗашифрованный пароль ({selected_method}): {encrypted_password}")80else:81print("Ошибка: выбран неизвестный метод шифрования.")82
83'''
841. random и string используются для генерации случайных паролей.
852. re (регулярные выражения) используется для проверки пароля на соответствие критериям надежности.
863. hashlib предоставляет функции для хэширования с использованием алгоритмов, таких как SHA256 и MD5.
874. base64 позволяет кодировать данные в формат Base64.
88'''
89
90'''
91[Функция генерации случайного пароля]
921. Генерирует случайный пароль длиной по умолчанию 12 символов.
932. Пользователь может настроить длину пароля и выбрать, использовать ли цифры, заглавные буквы и специальные символы.
943. Генерация выполняется с использованием библиотеки random, которая случайным образом выбирает символы из строки допустимых символов.
95'''
96
97'''
98[Функция проверки надежности пароля]
99Длина: минимум 8 символов.
100Наличие хотя бы одной цифры.
101Наличие хотя бы одной заглавной буквы.
102Наличие хотя бы одного специального символа (из набора @$!%*?&#).
103
104Если все критерии выполнены, возвращается True, иначе False.
105'''
106
107'''
108Эта функция шифрует пароль с использованием выбранного метода:
1091. SHA256 — создает криптографический хэш с помощью алгоритма SHA256.
1102. MD5 — создает хэш с помощью алгоритма MD5.
1113. Base64 — кодирует пароль в формат Base64.
112
113Если выбран неизвестный метод, выбрасывается ошибка.
114'''
115
116'''
117[Методы шифрования]
118Здесь задаются методы шифрования, которые пользователь может выбрать, используя соответствующие номера (1, 2 или 3).
119'''
120
121'''
122[Запрос пароля от пользователя]
123Эта функция предлагает пользователю выбрать:
124Генерировать пароль или ввести свой вручную:
125Если пользователь выбрал автоматическую генерацию, ему предлагается задать параметры (длину, использование цифр, заглавных букв и специальных символов).
126Если выбран ввод вручную, программа запрашивает пароль от пользователя.
127'''
128
129# TODO: Заметки
130## Автор: Дуплей Максим Игоревич
131## Дата: 19.09.2024