|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#检查用户密码安全性
#检测长度
def length_examine(password):
length = len(password)
if length<8:
length_e = 1
elif 8<=length<16:
length_e = 2
else:
length_e = 3
return length_e
#检测组合
def type_examine(password):
symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
alphabet = 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'
numbers = '1234567890'
type_e = 0
for each_one in password:
if each_one in symbols:
type_e += 1
break
for each_one in password:
if each_one in alphabet:
type_e += 1
break
for each_one in password:
if each_one in numbers:
type_e += 1
break
return type_e
#检测是否以字母开头
def first_examine(passworld):
alphabet = 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'
if password[0] in alphabet:
first_e = 1
else :
first_e = 0
return first_e
#三者组合判断等级
#判断思路:
#长度等级三等,位数等级三等,首字符是否为字母两等,总共18种组合
#高:长度与位数等级都是最高等级 或者 长度与位数为一高一中并且首字符为字母
#低:长度与位数等级都是最低等级 或者 长度与位数为一低一中并且首字符不为字母
#中:除高低之外
def grade_examine(length_e,type_e,first_e):
if length_e==3 and type_e==3:
grade = 3
elif length_e==3 and type_e==2 and first_e==1:
grade = 3
elif length_e==2 and type_e==3 and first_e==1:
grade = 3
elif length_e==1 and type_e==1:
grade = 1
elif length_e==1 and type_e==2 and first_e==0:
grade = 1
elif length_e==2 and type_e==1 and first_e==0:
grade = 1
else:
grade = 2
return grade
#输出
password = input('请输入您需要检查的密码组合:')
grade = grade_examine(length_examine(password),type_examine(password),first_examine(password))
while True:
if grade==1:
print('您的密码安全等级检测为:低')
elif grade==2:
print('您的密码安全等级检测为:中')
elif grade==3:
print('您的密码安全等级检测为:高')
break
print('请按以下方式提升您密码的安全级别:')
print('1.首个字符尽量使用字母')
print('2.尽可能包括数字、字母及特殊符号三种字符')
print('3.使位数尽可能多(大于16位)')
break
我觉得小甲鱼那个参考答案不太完善,就自己捣鼓了这个。
但是我觉得我这个代码太长了,有没有大佬可以帮我简化一下?感激不尽
另外,用户输入的密码可以不显示在屏幕上吗?显示在屏幕上一眼就看出来了。我想让别人输入密码,我们都看不见,而这个代码可以判断他密码的安全性。
|
|