Python检测密码安全强度两种⽅式正则表达式检测密码强度字符串遍历检测密
码强度
检测密码安全强度
实验⽬的
了解标准库中sting中的常量。
理解密码安全强度的概念。
熟练运⾏逻辑运算符and,并理解惰性求值的特点。
熟练运⾏字典结构。
实验内容
⼀般地,可以作为密码字符的主要有数字、⼩写字母、⼤⼩字母和⼏个标点符号。密码安全强度主要和字符串的复杂程度有关系,字符串中包含的字符种类越多,认为其安全强度越⾼。按照这个标准可以把安全强度等级分为强密码、中⾼、中低、弱密码。其中强密码表⽰字符串中同时含有数字、⼩写字母、
⼤写字母、标点符号这四类字符,⽽弱密码表⽰字符串中仅包含4类字符串中的⼀种。
实验内容
编写程序,输⼊字符串,输出字符串作为密码时的安全强度。
常规⽅法
import string
def checkpwd(pwd):
'''密码必须⾄少包含6个字符'''
if not isinstance(pwd,str)or len(pwd)<6:
return'not suitable for password'
'''密码强度等级与包含字符种类的对应关系'''
d ={1:'弱密码',2:'中低',3:'中⾼',4:'强密码'}
python正则表达式不包含
'''分别⽤来标记pwd是否含有数字、⼩写字母、⼤写字母和指定的标点符号'''
r =[False]*4
for ch in pwd:
#是否包含数字
if not r[0]and ch in string.digits:
r[0]=True
#是否包含⼩写字母
elif not r[1]and ch in string.ascii_lowercase:
r[1]=True
#是否包含⼤写字母
elif not r[2]and ch in string.ascii_uppercase:
r[2]=True
#是否包含指定的标点符号
elif not r[3]and ch in",./!;?<>":
r[3]=True
(r.count(True),'error')
#统计包含的字符种类,返回密码强度
for i in range(4):
pwd =input("请输⼊您的密码:")
print(checkpwd(pwd))
请输⼊您的密码:123456
弱密码
请输⼊您的密码:123asd
中低
请输⼊您的密码:12asDF
中⾼
请输⼊您的密码:12ASdf,.
强密码
正则表达式版本
'''正则表达式版本'''
import re
patlower ='[a-z]+'
patupper ='[A-Z]+'
patdigit ='[0-9]+'
patchara ='[,./!;?<>]'
def checkpwd2(pwd2):
d ={1:'弱密码',2:'中低',3:'中⾼',4:'强密码'}    r =[False]*4
for ch in pwd2:
if bool(re.search(patlower, ch)):
r[0]=True
elif bool(re.search(patupper, ch)):
r[1]=True
elif bool(re.search(patdigit, ch)):
r[2]=True
elif bool(re.search(patchara, ch)):
r[3]=True
(r.count(True),'error')
for i in range(4):
pwd2 =input("请输⼊您的密码:")
print(checkpwd2(pwd2))
请输⼊您的密码:123456
弱密码
请输⼊您的密码:123asd
中低
请输⼊您的密码:123asD
中⾼
请输⼊您的密码:12asD/
强密码

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。