首页 > 解决方案 > 密码生成器生成相同的密码

问题描述

我正在尝试用 Python 制作密码生成器,但我遇到了一些问题。

我的代码如下:

import random
import time

f = open("password_list.txt", "a+")

start = time.time()
password = ""
chars= "123456789"
number = int(input("Number of passwords to generate? = "))
length = int(input("Password length? = "))

for p in range(number):
    password = ""
    for c in range(length):
        password += random.choice(chars)
    print(password)
    f.write(password + "\n") 

print('time: ' + str((time.time() - start)) + ' sec')

f.close()

一切正常,但唯一的问题是有时它会在文本文件中生成相同的密码。我怎样才能避免这种情况?

标签: pythonpython-3.xpasswords

解决方案


避免重复问题的一种方法是将密码放入set循环中,并继续循环直到集合的长度是您要生成的密码数量。然后您可以将集合的内容写入文件。这显示了如何生成密码集:

import random

chars= "123456789"
number = 5
length = 8
passwords = set()

while len(passwords) < number:
    password = ""
    for c in range(length):
        password += random.choice(chars)
    passwords.add(password)

print(passwords)

样本输出:

{'67824479', '67159221', '78423732', '77922952', '83499619'}

推荐阅读