python - 如何使用 2 个随机小写字母、大写字母、数字和标点符号构建密码?
问题描述
我想用 Python 构建一个强密码生成器,强密码是 2 个小写字符、2 个大写字符、2 个数字、2 个符号。强大的部分给了我错误。同时随机调用方法的位置参数太多
# Password generator
import random
import string
def create_waek_pass():
password = random.randint(10000000, 99999999)
print(f"password : {password}")
def create_strong_pass():
password = []
for i in range(2):
lower = [string.ascii_lowercase] # i wanted to create a list with 2 lower case chars
upper = [string.ascii_uppercase]
number = [random.randint(0, 9)]
exclimations = [string.punctuation]
while len(password) <= 8:
password = random.choice(lower, upper, number, exclimations)
print(password)
解决方案
正如我在评论中所说,扮演自己的安全功能从来都不是一个好主意,因为安全是一个复杂的空间,应该留给专业人士。但是您说这只是为了您自己的培训/学习,所以下面是您的代码示例,但经过修改后可以正常工作。这绝不是一个经过深思熟虑的设计,我只是采用了您的代码并使其工作。
# Password generator
from random import shuffle, choice
import string
def create_strong_pass():
lower = string.ascii_lowercase
upper = string.ascii_uppercase
number = string.digits
punctuation = string.punctuation
password = []
for _ in range(2):
password.append(choice(lower))
password.append(choice(upper))
password.append(choice(number))
password.append(choice(punctuation))
shuffle(password)
return "".join(password)
for _ in range(10):
print(create_strong_pass())
输出
b7B#eR?7
)V2be7!Y
3Hng7_;V
q\/mDU74
Ii03/tW:
0Md6i;K@
<:LHw0b6
2eoM&V`6
c09N)Za(
t:34T'Bo
推荐阅读
- javascript - 如何将(通过 javascript)动态创建的 HTML 表的数据发送到 PHP 文件进行处理?
- mysql - 如何获取仅与指定用户相关的第一个线程?
- angular - 如何将ngModel值传递给Angular 6中的组件
- java - Jetty Endpoint除了网络连接外还能代表什么连接
- python - 关闭 tkinter 顶级窗口
- angular - 带有自定义组件的 Angular 延迟加载模块
- c# - 如何在文本框中拆分文本
- python - python中的lapply等效函数
- java - 有没有办法在 JAVA 中使用 dd-MM-yyyy 格式的日期列对 SQLServerBulkCSVFileRecord 进行 SQLServerBulkCopy?
- javascript - 循环遍历对象时出错