【发布时间】:2015-12-18 17:07:48
【问题描述】:
我创建了一个密码检查器,它生成一个随机字符并进行比较,直到所有字符都相同。但是当它滚动时,它会多次重复这个角色。有没有办法让角色不重复,可能将角色放入列表中?然后我可以使用
list.del()
阻止它重复的功能。这是我的代码:
import string
import random
import time
print('Welcome to the password checker')
characters = string.ascii_lowercase + string.digits + string.ascii_uppercase + ' .,!?;:`"+/*()@#$&_-='
password = input("Enter your password: ")
tryFirst = ''.join(random.choice(characters) for i in range(len(password)))
trySecond = ''
Finished = False
attempt = 0
while Finished == False:
print("{}) {}".format(attempt,tryFirst))
trySecond = ''
Finished = True
for num in range(len(password)):
if tryFirst[num] != password[num]:
Finished = False
trySecond += random.choice(characters)
else:
trySecond += password[num]
attempt += 1
tryFirst = trySecond
time.sleep(0.05)
print("Password found! That took {} attempts".format(attempt))
if attempt < 100:
print("Your password isn't safe")
elif attempt < 250:
print("Your password is quite safe, could do with improvement")
elif attempt < 400:
print("Your password is adequately safe")
elif attempt < 600:
print("Your pasword is safe")
【问题讨论】:
-
洗牌一次,然后根据需要弹出()项目。
-
您使用的破解用户密码的方法与攻击者获取密码的方式无关。您需要担心诸如字典攻击和彩虹表之类的事情,或者您的数据库被盗。我建议花一些时间阅读security.stackexchange.com 上有关密码保护的问题。如果您觉得自己无法以这种方式处理事情,也许只是问一下这种方法有什么问题。
-
特别是,正确构建的身份验证系统将永远向攻击者公开第一个、第二个或任何单个字符是否正确。 (攻击者只会在整个密码上得到“是”或“否”。他们无法判断第一个字符是否正确。)您的算法还可以报告不同级别的安全性由于随机性,密码相同;您必须运行此 多次 次并取平均值。而且,如果平均猜测次数少于数十亿或数亿次,那么密码就极其不安全。
-
@jpmc26 这个程序只是用来检查密码的安全性
-
为什么不直接使用正则表达式来确保密码符合特定条件?
标签: python regex python-3.x