python - 密码生成器生成相同的密码
问题描述
我正在尝试用 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()
一切正常,但唯一的问题是有时它会在文本文件中生成相同的密码。我怎样才能避免这种情况?
解决方案
避免重复问题的一种方法是将密码放入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'}
推荐阅读
- octobercms - 如何使用驱动程序插件将视频从 octobercms 媒体上传到 AWS s3 存储桶?从请求中获取错误文件丢失
- sql - 如何检查 *.bcp 文件内容?
- python - Python - 对数组的成对元素应用函数而不使用循环
- javascript - 用罢工标签替换 span 类 red 的所有实例
- rest - Salesforce 和 apache Camel upsert 操作
- drools - 使用 CDI 在 drools 规则中注入事实
- sql - 插入自动递增的列值/id
- java - 如何使用 avro-tools-1.9.1.jar IDL 生成 {"type":"string","avro.java.string":"String"} 类型的字段?
- c# - 无法使用键盘访问工具提示内容
- angular - 使用 Angular 模板运行 ASP.NET Core 时出错