python实现密码强度校验
本文实例为大家分享了python实现密码强度校验的具体代码,供大家参考,具体内容如下
一校验规则
规则1密码长度8位以上
规则2密码需包含数字
规则3密码需包含大小写字母
规则4密码需包含特殊字符['+','-','*','/','_','&','%',',']
规则5校验5次不通过则强制退出
二文件操作
每次输入的密码都会保存到文本文件中
以下是python的代码实现:
"""
作者:zhengzhihui
版本:7.0
日期:2019/7/13
功能:判断密码强度
2.0功能:循环和终止
3.0功能:将密码保存到文本中
4.0功能:读取文件,遍历文件
5.0功能:定义PasswordTool类
6.0功能:定义FileTool类
7.0功能:密码中增加大小写字母和特殊字符['+','-','*','/','_','&','%',',']
"""
importtimeastm
classFileTool():
"""
文件工具类
"""
def__init__(self,filepath):
self.filepath=filepath
defwrite_to_file(self,content):
withopen(self.filepath,'a')asf:
f.write(content)
defread_from_file(self):
withopen(self.filepath,'r')asf:
content=f.readlines()
returncontent
classPasswordTool():
"""
密码工具类
"""
def__init__(self,password):
self.password=password
self.strength_level=0
defcheck_number_exist(self):
"""
判断是否含数字
"""
has_number=False
forcinself.password:
ifc.isnumeric():
has_number=True
break
returnhas_number
defcheck_letter_exist(self):
"""
判断是否含字母
"""
has_upper_letter=False
has_lower_letter=False
forcinself.password:
ifc.isupper():
has_upper_letter=True
elifc.islower():
has_lower_letter=True
has_both_letter=has_upper_letterandhas_lower_letter
ifhas_both_letter:
break
returnhas_both_letter
defcheck_specialchar_exist(self):
"""
判断是否包含特殊字符
"""
has_specialchar=False
specialchar_list=['+','-','*','/','_','&','%',',']
forcinself.password:
ifcinspecialchar_list:
has_specialchar=True
break
returnhas_specialchar
defprocess_password(self):
"""
判断是否符合规则
"""
#规则1:长度至少8位
iflen(self.password)>=8:
self.strength_level+=1
else:
print('密码长度至少8位')
#规则2:必须包含数字
ifself.check_number_exist():
self.strength_level+=1
else:
print('密码需要包含数字')
#规则3:必须包含大小写字母
ifself.check_letter_exist():
self.strength_level+=1
else:
print('密码需要包含大小写字母')
#规则4:需要包含特殊字符
ifself.check_specialchar_exist():
self.strength_level+=1
else:
print('密码需要包含至少一个特殊字符("+,-,*,/,_")')
defmain():
"""
主函数
"""
try_times=5
pwd_strength_dict={0:'弱',1:'较弱',2:'中',3:'强',4:'超强'}
myfile=FileTool("password_7.0.txt")
whiletry_times>0:
password=input('请输入密码:')
mypwdtool=PasswordTool(password)
mypwdtool.process_password()
now_time=tm.strftime("%Y-%m-%d%H:%M:%S",tm.localtime())
myfile.write_to_file("日期:{}密码:{}强度:{}{}\n".format(now_time,password,
mypwdtool.strength_level,pwd_strength_dict[mypwdtool.strength_level]))
ifmypwdtool.strength_level>=4:
print('恭喜!密码合格')
break
else:
print('密码不合格')
try_times-=1
print()
iftry_times<=0:
print('尝试次数过多,密码设置失败!')
content=myfile.read_from_file()
print(content)
if__name__=="__main__":
main()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。