generator_password

Форк
0
131 строка · 6.9 Кб
1
import random
2
import string
3
import re
4
import hashlib
5
import base64
6

7
# Функция для генерации случайного пароля
8
def generate_password(length=12, use_digits=True, use_upper=True, use_special=True):
9
    characters = string.ascii_lowercase  # Буквы нижнего регистра
10
    if use_upper:
11
        characters += string.ascii_uppercase  # Добавляем заглавные буквы
12
    if use_digits:
13
        characters += string.digits  # Добавляем цифры
14
    if use_special:
15
        characters += string.punctuation  # Добавляем специальные символы
16

17
    password = ''.join(random.choice(characters) for _ in range(length))
18
    return password
19

20
# Функция для проверки надежности пароля с использованием регулярных выражений
21
def check_password_strength(password):
22
    length_check = len(password) >= 8
23
    digit_check = re.search(r"\d", password) is not None
24
    upper_check = re.search(r"[A-Z]", password) is not None
25
    special_check = re.search(r"[@$!%*?&#]", password) is not None
26
    return length_check and digit_check and upper_check and special_check
27

28
# Функция для шифрования пароля
29
def encrypt_password(password, method):
30
    if method == "SHA256":
31
        return hashlib.sha256(password.encode()).hexdigest()
32
    elif method == "MD5":
33
        return hashlib.md5(password.encode()).hexdigest()
34
    elif method == "Base64":
35
        return base64.b64encode(password.encode()).decode()
36
    else:
37
        raise ValueError("Неизвестный метод шифрования!")
38

39
# Доступные методы шифрования
40
encryption_methods = {
41
    "1": "SHA256",
42
    "2": "MD5",
43
    "3": "Base64"
44
}
45

46
# Запрос на ввод пароля пользователем или его генерацию
47
def get_user_password():
48
    choice = input("Хотите сгенерировать пароль автоматически? (да/нет): ").lower()
49
    if choice == 'да':
50
        length = int(input("Введите длину пароля (по умолчанию 12): ") or 12)
51
        use_digits = input("Использовать цифры? (да/нет, по умолчанию да): ").lower() != 'нет'
52
        use_upper = input("Использовать заглавные буквы? (да/нет, по умолчанию да): ").lower() != 'нет'
53
        use_special = input("Использовать специальные символы? (да/нет, по умолчанию да): ").lower() != 'нет'
54
        return generate_password(length=length, use_digits=use_digits, use_upper=use_upper, use_special=use_special)
55
    else:
56
        return input("Введите свой пароль: ")
57

58
# Основная программа
59
password = get_user_password()
60
print(f"\nВаш пароль: {password}")
61

62
# Проверка надежности пароля
63
if check_password_strength(password):
64
    print("Пароль надежен.")
65
else:
66
    print("Пароль недостаточно надежен. Рекомендуется использовать более сложный пароль.")
67

68
# Выбор метода шифрования пользователем
69
print("\nВыберите метод шифрования:")
70
print("1: SHA256")
71
print("2: MD5")
72
print("3: Base64")
73

74
choice = input("Введите номер метода шифрования (1, 2 или 3): ")
75

76
if choice in encryption_methods:
77
    selected_method = encryption_methods[choice]
78
    encrypted_password = encrypt_password(password, method=selected_method)
79
    print(f"\nЗашифрованный пароль ({selected_method}): {encrypted_password}")
80
else:
81
    print("Ошибка: выбран неизвестный метод шифрования.")
82

83
'''
84
1. random и string используются для генерации случайных паролей.
85
2. re (регулярные выражения) используется для проверки пароля на соответствие критериям надежности.
86
3. hashlib предоставляет функции для хэширования с использованием алгоритмов, таких как SHA256 и MD5.
87
4. base64 позволяет кодировать данные в формат Base64.
88
'''
89

90
'''
91
[Функция генерации случайного пароля]
92
1. Генерирует случайный пароль длиной по умолчанию 12 символов.
93
2. Пользователь может настроить длину пароля и выбрать, использовать ли цифры, заглавные буквы и специальные символы.
94
3. Генерация выполняется с использованием библиотеки random, которая случайным образом выбирает символы из строки допустимых символов.
95
'''
96

97
'''
98
[Функция проверки надежности пароля]
99
Длина: минимум 8 символов.
100
Наличие хотя бы одной цифры.
101
Наличие хотя бы одной заглавной буквы.
102
Наличие хотя бы одного специального символа (из набора @$!%*?&#).
103

104
Если все критерии выполнены, возвращается True, иначе False.
105
'''
106

107
'''
108
Эта функция шифрует пароль с использованием выбранного метода:
109
1. SHA256 — создает криптографический хэш с помощью алгоритма SHA256.
110
2. MD5 — создает хэш с помощью алгоритма MD5.
111
3. 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

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.