Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 10.07.2022
Сообщений: 8

Генерирование случайных паролей

10.07.2022, 11:56. Показов 2108. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Браузер Chrome предлагает нам сгенерированные случайные пароли для сайтов и веб-приложений. Мы потренируемся решать подобные задачи. Разобьем ее на три этапа. Первый этап — создайте функцию get_random_password, которая будет генерировать случайную строку пароль.

Требования:

в пароле должно быть 8 символов.
для шифрования пароля будем использовать следующий набор символов:
()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVW XYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Эти символы лежат в пределах от 40 до 126 кода в таблице ASCII включительно, и доступ к ним можно получить с помощью функции chr.

chr(40) # (
chr(126) # ~
Чтобы получить случайное целое значение из заданного диапазона, мы используем стандартный модуль Python random и его функцию randint. Она имеет вызов вида randint(A, B) и возвращает случайное целое число N, A ≤ N ≤ B.

from random import randint

random_num = randint(40, 126)
После выполнения кода в random_num будет находиться случайное целое число от 40 до 126 включительно.

Таким образом функция get_random_password должна случайным образом выбрать из предложенного диапазона 8 символов и возвратить сгенерированный пароль в виде строки.
Python
1
2
3
4
from random import randint
 
 
def get_random_password():
Добавлено через 6 минут
Есть ли вариант проще

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
from random import randint
 
 
def get_random_password():
    global result
    result = ""
    count = 0
    while count < 8:
        random_symbol = chr(randint(40, 126))
        result = result + random_symbol
        count = count + 1
    return result
def is_valid_password(password):
    has_upper = False
    has_lower = False
    has_num = False
    for ch in password:
        if "A" <= ch <= "Z":
            has_upper = True
        elif "a" <= ch <= "z":
            has_lower = True
        elif "0" <= ch <= "9":
            has_num = True
    if len(password) == 8 and has_upper and has_lower and has_num:
        return True
    return False
def get_password():
    count = 0
    while is_valid_password(get_random_password()) != True or count != 100:
        count += 1
        is_valid_password(get_random_password())
    return result
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.07.2022, 11:56
Ответы с готовыми решениями:

Генератор паролей случайных чисел/букв
Приветствую господа Питонисты! Только пытаюсь начать изучение Питона, так как есть необходимость научиться писать скрипты для себя. В...

Генерирование случайных величин
Доброго времени суток! Помогите разобраться, начали знакомство с GPSS, куча вопросов, а методичка лично для меня написана на эльфийском....

Генерирование случайных чисел
Через Next() надо вывести случайные числа от 2 до 11, но кроме 5. Я сделал массив, и как этот массив вставить в Next()? Или как это можно...

3
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
10.07.2022, 12:07
Цитата Сообщение от Judaha Посмотреть сообщение
Есть ли вариант проще
Отож!
Python
1
2
3
4
5
6
from exrex import getone as get
from random import shuffle
 
chars = list(get(r'[A-Z]{2}') + get(r'[a-z]{2}') + get(r'\d\d') + get(r'[()*+,-./:;<=>?@\][^_`{|}~]{2}'))
shuffle(chars)
print(''.join(chars))
0
0 / 0 / 0
Регистрация: 10.07.2022
Сообщений: 8
10.07.2022, 12:30  [ТС]
Я еще такое решение сделал


Python
1
2
3
4
5
6
7
8
def get_random_password():
    result = ""
    count = 0
    while count < 8:
        random_symbol = chr(randint(40, 126))
        result = result + random_symbol
        count = count + 1
    return result
Добавлено через 13 минут
iSmokeJC, Возможно поможите мне закончить.

У меня с предыдущих двух заданий есть код:


Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
from random import randint
 
 
def get_random_password():
    result = ""
    count = 0
    while count < 8:
        random_symbol = chr(randint(40, 126))
        result = result + random_symbol
        count = count + 1
    return result    
 
 
def is_valid_password(password):
    has_upper = False
    has_lower = False
    has_num = False
    for ch in password:
        if "A" <= ch <= "Z":
            has_upper = True
        elif "a" <= ch <= "z":
            has_lower = True
        elif "0" <= ch <= "9":
            has_num = True
    if len(password) == 8 and has_upper and has_lower and has_num:
        return True
    return False

Необходимо сгенерировать пароль с помощью функции get_random_password и, если он проходит надежность проверкой функцией is_valid_password, возвращаем его, если нет — повторяем итерацию снова.
0
259 / 205 / 60
Регистрация: 25.05.2022
Сообщений: 879
10.07.2022, 15:36
Зачем перепроверять или речь о пользовательском?
Склоняюсь к варианту iSmokeJC:
1) Большие буквы + 2) маленькие + 3) цифры + 4) спецсимволы + остальное рандомом и всё вмешать, но не взбалтывать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.07.2022, 15:36
Помогаю со студенческими работами здесь

Генерирование случайных слов
Доброго времени суток.Нужно сгенерировать 14 значное слово из букв и цифр,с цифрами все понятно,а как сделать генерирование букв?

Генерирование случайных чисел
Пишу плеер, хочу сделать режим случайного воспроизведение музыки... делаю это так: private void button4_Click(object sender,...

Генерирование вещественных случайных чисел
Преподавательница сказала чтобы массив рандомно заполнялся. А в задании сказано, что массив ещё из вещественных чисел состоит. Как тогда...

Генерирование случайных чисел в диапазонах на С++
Получить с помощью генератора случайных чисел 200 значений в указанном диапазоне из множества {–30; 10; 63; 59; 120; 175; 54: 81};.

Генерирование случайных данных в Label
Здравствуйте, уважаемые форумчане! Я не могу решить небольшую задачу в Lazarus. У меня имеется 8 label и 8 необходимых значений для них....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru