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()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。