Ваш браузер устарел. Рекомендуем обновить его до последней версии.

Info Board


Генератор случайного пароля PASSWORD

Опубликовано 01.10.2023

Генератор случайного пароля с возможностью изменения его составных частей: цифр, символов и букв. Частенько бывает, что нужно смоделировать какой-либо валидный пароль, а может и не валидный, но нет времени прописывать код...

Ниже приведём примеры функций для генерации пароля в разрезе нескольких подходов к его наполнению.

Вариант 1. Для получения пароля просто задаём его длину, а его составные части (буквы, цифры и символы (БЦС)) будут генерироваться случайным образом в коде:

import random
import string


def random_password_1(length):
    password = ""

    password += string.digits
    password += string.punctuation
    password += string.ascii_letters

    password = ''.join(random.choice(password) for _ in range(length))

    return password


print(random_password_1(12))

outydpqGzU(1iVPwi2

Метод string имеет несколько переменных. Их можно посмотреть, нажав Ctrl и на слово string в вашей IDE. В данном случае мы используем переменные для вывода цифр, символов и букв.

Вариант 2. Функция генерирует случайные БЦС в соответствии с указанными длинами и объединяет их в одну строку. Затем строка перемешивается для создания случайного пароля:

def random_password_2(digits_length, symbols_length, letters_length):
    password = ''

    # Генерация случайных цифр
    digits = ''.join(random.choices(string.digits, k=digits_length))
    password += digits

    # Генерация случайных символов
    symbols = ''.join(random.choices(string.punctuation, k=symbols_length))
    password += symbols

    # Генерация случайных букв
    letters = ''.join(random.choices(string.ascii_letters, k=letters_length))
    password += letters

    # Перемешиваем пароль
    password = ''.join(random.sample(password, len(password)))

    return password


print(random_password_2(7, 3, 3))  # len digits, symbols, letters

out: D896E5%d);159

Вариант 3. Длину БЦС прописываем в самом коде, плюс разделяем прописные и строчные буквы:

def random_password_3() -> str: # Указываем, что возвращать будем string
    random_source = string.ascii_letters + string.digits + string.punctuation
    # ascii_letters - прописные и строчные буквы
    password = random.sample(random_source, 6# любые случайные БЦС
    password += random.sample(string.ascii_uppercase, 2) # плюс только прописные
    password += random.sample(string.digits, 3) # только цифры
    password += random.sample(string.punctuation, 1) # только символы
    pass_list = list(password) # помещаем в список
    random.SystemRandom().shuffle((pass_list)) # перемешиваем значения в списке
    password = ''.join(pass_list)
    return password


print(random_password_3())

out: G0o(C2yS6Zi5