我的班级任务,即使我尝试了所有内容,我的代码似乎也出现了问题。我应该制作一个能够检查一个人密码强度的小程序。谁能告诉我我做错了什么?非常感谢。
p = raw_input("Enter password") if len(p) <= 6:
print("Weak1") elif len(p) > 6 and len(p) <=12:
if p.lower:
print("Weak2")
elif p.upper() or int():
print("Medium4") elif len(p) > 12:
if p.lower and not p.upper():
print("Strong6")
elif p.upper() and p.lower():
print("Strong7")
elif int() and p.lower():
print("Strong9")
答案 0 :(得分:0)
你的语法有很多问题。重新格式化代码后, 考虑这些内置方法。 full list here
>>> password = "mylowercasepassword"
>>> password.islower()
True
>>> password2 = "MYSPRPSSWRD"
>>> password2.islower()
False
>>> password2.isupper()
True
>>> pwd = "MySvp3rStr0ngpw4"
>>> pwd.isalpha()
False
>>> pwd.isalnum()
True
不使用始终评估p.lower()
的{{1}},p.upper()
等,而是使用下面显示的方法。
您可以重写您的代码,但尝试了解更多真正的解决方案。顺便说一句,我修复了你代码的一些部分。
true
答案 1 :(得分:0)
你做错了是你发明了自己的密码强度估算器,它不是基于最好的原则和研究,而是你自己发明的规则:)
有exist a Python library zxcvbn,可提供更真实的密码强度估算。
请注意,这可能无法满足您的需求,但如果您要构建真实,安全的服务,那么您将会采取哪些措施。
答案 2 :(得分:0)
您需要使用import sys, os
try:
import re
except:
os.system("python -m pip install re")
import re
try :
import string
except:
os.system("python -m pip install string")
import string
password = (raw_input("Type the Password : "))
p = password
strength = []
def AnalyzePassword():
total = 0
for k in strength:
total = total + int(k)
total_analyze = int(total) + 0.0
analyzed = int( (total_analyze) * 10)
analyzed = str(analyzed).replace("00", "0")
result = analyzed
return result
def PassLvlChecker(passd):
if len(passd) < 18: strength.append("-4")
elif len(passd) > 18: strength.append("4")
if passd.isalpha(): strength.append("2")
if bool(re.compile('[\W]+').findall(passd)) is True: strength.append("7")
if bool(re.compile("[A-Z]+").findall(passd)) is True: strength.append("5")
if bool(re.compile("[0-9]+").findall(passd)) is True: strength.append("9")
if len(passd) > 18 and \
bool(re.compile('[\W]+').findall(passd)) is True and\
bool(re.compile("[A-Z]+").findall(passd)) is True and\
bool(re.compile("[0-9]+").findall(passd)) is True:
strength.append("15")
strength.append(str(len(passd)))
return AnalyzePassword()
def checkAgain(pas):
if pas == '':
p = raw_input("Type the Password : ")
checkAgain(p)
else:
passStrength = PassLvlChecker(password)
print "Your password is", str((int(passStrength))) + "%", "Secured!"
if p == '':
p = (raw_input("Type the Password : "))
checkAgain(p)
else:
passStrength = PassLvlChecker(password)
print "Your password is", str((int(passStrength))) + "%", "Secured!"
模块来查找String是否包含大写和小写,多少大写和小写等。
这是我做的一个简单的实现。
它仍然是一个傻瓜脚本!但仍然有效!
{{1}}