Перейти к содержимому

Как написать генератор паролей на python

  • автор:

Генерация паролей на python с условиями

Подскажите, как это реализовать без сторонних библиотек.

import random count_symvol = int(input('Введите число не менее 6: ')) spisok = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h', 'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p', 'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'X', 'x', 'Y', 'y', 'Z', 'z') arr_pass = [] for i in range(0, count_symvol): arr_pass.append(random.choice(spisok)) print(arr_pass) 

Отслеживать
422 5 5 серебряных знаков 21 21 бронзовый знак
задан 1 июл 2021 в 12:06
69 1 1 серебряный знак 11 11 бронзовых знаков

Насколько нужно равномерное оаспределение паролей? Можно всегда в начале чередовать регистры букв, а потом дополнять оставшимися строчными.

Commented 1 июл 2021 в 13:31

Нельзя для генерации паролей использовать псевдорандом, импортируйте SystemRandom. docs.python.org/3/library/random.html#random.SystemRandom

Commented 1 июл 2021 в 15:40

3 ответа 3

Сортировка: Сброс на вариант по умолчанию

Если прям совсем нужно учитывать условие и использовать только random.choice, то могу предложить такой код. Здесь заглавные буквы не идут подряд, а чередуются, что не нарушает условие из 2-го пункта.

from random import choice ascii_uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' other_strings = 'abcdefghijklmnopqrstuvwxyz0123456789' if __name__ == '__main__': str_count = int(input()) if str_count >= 6: password = "" password += choice(other_strings + ascii_uppercase) # индекс для цикла, чтобы не уйти в лимит символов верхнего регистра if password.isupper(): upper_index = 1 else: upper_index = 0 # максимальное число букв в верхнем регистре в районе 20-30% str_upper_count = choice(range(int(str_count * 0.2), int(str_count * 0.3) + 1)) for i in range(str_count-1): if password[i].islower() and upper_index < str_upper_count: password += choice(ascii_uppercase) upper_index += 1 else: password += choice(other_strings) print(password) 
6 Urwdss 32 FqL9hYiS1lX36yO73eSkGih8wlhd1ma2 

�� Как генерировать пароли с использованием Python? ��

Генерация паролей в Python может быть достигнута с использованием готовых модулей, таких как random и string. Вот пример простой функции для генерации пароля:

 import random import string def generate_password(length): characters = string.ascii_letters + string.digits + string.punctuation password = ''.join(random.choice(characters) for _ in range(length)) return password # Генерирует пароль длиной 8 символов my_password = generate_password(8) print(f"Ваш новый пароль: ") 

В данном примере функция generate_password() принимает длину пароля в качестве аргумента и создает случайную строку, состоящую из букв, цифр и специальных символов. Вы можете изменить длину пароля в функции, чтобы соответствовать вашим требованиям. В примере используется длина 8 символов. Вы также можете настроить генерацию паролей под свои нужды, например, ограничить набор символов или добавить свои собственные требования к паролю. Не забудьте импортировать модули random и string перед использованием функции.

Детальный ответ

Как генерировать пароли с помощью Python

Генерация безопасного и надежного пароля является важной задачей в современном интернете. В этой статье мы рассмотрим, как можно использовать язык программирования Python для генерации паролей.

1. Генерация случайных паролей

Самым простым способом генерации паролей является использование модуля random в Python. Давайте посмотрим на простой пример:

import random import string def generate_password(length): characters = string.ascii_letters + string.digits + string.punctuation password = ''.join(random.choice(characters) for _ in range(length)) return password length = 10 password = generate_password(length) print(f"Сгенерированный пароль: ")

В этом примере мы используем функцию generate_password , которая принимает на вход длину пароля. Затем мы собираем список всех возможных символов, которые могут быть в пароле, используя модуль string . Затем мы используем функцию random.choice , чтобы выбрать случайный символ из этого списка и добавить его к паролю. Мы повторяем этот процесс length раз, чтобы получить нужную длину пароля. Удостоверьтесь, что вы устанавливаете правильную длину пароля для своих потребностей в функции generate_password . В нашем примере мы устанавливаем длину в 10 символов, но вы можете изменить это значение по своему усмотрению.

2. Генерация сложных паролей

Хотя случайно сгенерированные пароли могут быть достаточно безопасными, они могут быть сложны для запоминания. Мы можем использовать модуль secrets для создания более сложных паролей. Давайте посмотрим на пример:

import secrets import string def generate_password(length): characters = string.ascii_letters + string.digits + string.punctuation password = ''.join(secrets.choice(characters) for _ in range(length)) return password length = 10 password = generate_password(length) print(f"Сгенерированный пароль: ")

В этом примере мы используем модуль secrets , который обеспечивает более безопасное и случайное извлечение символов из списка. Он основан на криптографических алгоритмах, что делает пароли еще более надежными. Остальная часть кода остается такой же, как и в предыдущем примере.

3. Дополнительные возможности генерации паролей

  • Использование библиотеки passlib , которая предлагает различные алгоритмы генерации паролей и обработки хеширования.
  • Использование модуля hashlib , который предоставляет функции хеширования, которые можно использовать для генерации паролей.
  • Использование библиотеки Faker , которая позволяет генерировать пароли, похожие на настоящие.

Выбор конкретного метода генерации паролей зависит от ваших потребностей и требований к безопасности.

Вывод

В этой статье мы рассмотрели, как генерировать пароли с помощью Python. Мы рассмотрели простые и сложные способы генерации паролей, а также некоторые дополнительные возможности. Выберите подходящий метод, который соответствует вашим требованиям по безопасности и удобству использования.

��Как создать генератор паролей на Python? Простой способ для защиты ваших данных

Для создания генератора паролей на Python, вы можете использовать следующий код:

 import random import string def generate_password(length): characters = string.ascii_letters + string.digits + string.punctuation password = ''.join(random.choice(characters) for _ in range(length)) return password password_length = 10 generated_password = generate_password(password_length) print(f"Ваш сгенерированный пароль: ") 

Детальный ответ

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

 import random import string def generate_password(length): characters = string.ascii_letters + string.digits + string.punctuation password = ''.join(random.choice(characters) for _ in range(length)) return password length = int(input("Введите длину пароля: ")) password = generate_password(length) print("Сгенерированный пароль:", password) 

В этом примере мы определяем функцию generate_password, которая принимает один аргумент - длину пароля. Затем мы создаем переменную characters, которая содержит все возможные символы, из которых может состоять пароль. Мы используем модули string и random, чтобы получить символы алфавита, цифры и специальные символы. Далее мы используем генератор списка и метод join, чтобы создать пароль из случайно выбранных символов заданной длины. Наконец, мы возвращаем сгенерированный пароль. Чтобы протестировать нашу функцию, мы запрашиваем у пользователя желаемую длину пароля и вызываем функцию generate_password. Затем мы печатаем сгенерированный пароль. Вы можете добавить дополнительные проверки и ограничения к коду, например, чтобы гарантировать, что пароль содержит хотя бы одну заглавную букву, одну цифру и один специальный символ. Это поможет усилить безопасность пароля. Однако, для простоты, мы оставили эту проверку за рамками данной статьи. Теперь у вас есть функция, которая генерирует пароли на языке Python. Это мощный инструмент для обеспечения безопасности ваших аккаунтов. Помните, что хороший пароль должен быть длинным, уникальным и содержать разнообразные символы. Важно помнить, что пароль - это всего лишь один из многих аспектов безопасности. Регулярно обновляйте пароли, используйте различные пароли для разных аккаунтов и следуйте другим рекомендациям для обеспечения безопасности вашей информации.

Модуль secrets в Python, генерация паролей и токенов

Генерация паролей, токенов и криптографически сильных случайных чисел

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

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

Сколько байтов следует использовать токенам?

Чтобы обезопасить себя от атак методом "перебора", токены должны иметь достаточную случайность. С 2015 года считается, что 32 байта (256 бит) является достаточно сильным токеном для типичного варианта использования.

Что бы указать собственную длину токена, то можно явно передать функциям token_* аргумент nbytes , который имеет тип int . Этот аргумент принимается за количество байт, которое будет использовано при создании токена.

В противном случае, если аргумент nbytes не предоставлен или равен None , функциям token_* будут использовать разумное значение по умолчанию.

Примечания:

  • Значение по умолчанию может быть изменено в любое время, в том числе во время выпусков обновлений.
  • Приложения не должны хранить пароли в восстанавливаемом формате, будь то простой или зашифрованный текст. Они должны быть хешированы с использованием криптографически сильной односторонней (необратимой) хеш-функции.
Примеры использования:

Создание восьмибуквенного буквенно-цифрового пароля:

>>> import string >>> import secrets >>> alphabet = string.ascii_letters + string.digits >>> password = ''.join(secrets.choice(alphabet) for i in range(8)) >>> password # '9vfMa4Wz' 

Создание десятисимвольного буквенно-цифрового пароля, содержащего как минимум один символ нижнего регистра, как минимум один символ верхнего регистра и как минимум три цифры:

import string import secrets alphabet = string.ascii_letters + string.digits while True: password = ''.join(secrets.choice(alphabet) for i in range(10)) if (any(c.islower() for c in password) and any(c.isupper() for c in password) and sum(c.isdigit() for c in password) >= 3): break print(password) # 'oz2B4b3dO9' 

Создание кодовой фразы в стиле "XKCD":

import secrets # В стандартных системах Linux используйте удобный файл словаря. # Другие платформы, должны предоставить свой собственный список слов. with open('/usr/share/dict/words') as f: words = [word.strip() for word in f] password = ' '.join(secrets.choice(words) for i in range(4)) print(password) # "Np escape guidebook's outperforms" 

Создание временного, трудно угадываемого URL-адреса, содержащего маркер безопасности и подходящего для приложений восстановления пароля:

>>> import secrets >>> url = 'https://mydomain.com/reset=' + secrets.token_urlsafe() >>> url # 'https://mydomain.com/reset=l6nrqcxpqgoogE0TBjAQNHrrgm-VycP3gcbP4eqvFsM' 
  • КРАТКИЙ ОБЗОР МАТЕРИАЛА.
  • Случайные числа модуля secrets
  • Генерация токенов модулем secrets

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *