Задача: Генерация надежного пароля заданного размера

Опубликован: 31.10.2024 21

Условие: Напишите функцию, которая будет генерировать надежный пароль заданного размера. Пароль обязательно должен содержать маленькую и большую буквы, цифру и какой-нибудь специальный символ.

Решение:

Для генерации случайного набора символов пароля рекомендуется использовать вместо модуля random модуль secrets, который генерирует криптографически сильные случайные числа.

Для определения алфавита (набора символов, из которых будет генерироваться пароль) рекомендуется использовать модуль string. Модуль string содержит строчные и прописные буквы (asii_letters), специальные символы (punctuation), а также строку цифр от 0 до 9 (digits).

import secrets
import string


def gen_password(pwd_length):
    letters = string.ascii_letters
    digits = string.digits
    special_chars = string.punctuation

    alphabet = letters + digits + special_chars

    while True:
        pwd = ''
        for i in range(pwd_length):
            pwd += ''.join(secrets.choice(alphabet))
        if (any(char in special_chars for char in pwd) and
                any(char in digits for char in pwd) and
                any(char in letters.lower() for char in pwd) and
                any(char in letters.upper() for char in pwd)):
            break

    return pwd


pwd_length = 8  # длина пароля
print(f"Пароль: {gen_password(pwd_length)}")

# Пароль: DxeB^\9z

Похожие посты

Задача: Решение квадратного уравнения

Задача: Тренажер таблицы умножения

Задача: Наибольший числовой палиндром

Задача: Разложение числа на простые множители

Комментариев нет.