密码强度:是指一个密码对抗财产或者暴力破解的有效程度;一般是指一个未授权访问者得到正确密码的平均尝试次数。
强密码可以降低安全漏洞的整体风险。
简易版(常用)规则:
1、密码长度至少8位
2、密码含有数字
3、密码含有字母
设置一个变量strength_level用于记录密码的强度,初始位0.满足一个条件,对其加1。
长度判断:使用len()方法;
包含数字判断:使用isnumeric()方法;
包含字母判断:使用isalpha()方法;
如果strength_level等于3,密码强度合格,否则不合格。
str.isnumeric()
检测字符串是否只由数字组成
str.isalpha()
检测字符串是否只由字母组成
str.islower()
检测字符串中所有的字母是否都为小写
str.isupper()
检测字符串中所有的字母是否都为大写
更多is***()方法请参考:
https://docs.python.org/3/library/stdtypes.html#string-methods
"""
作者:lanxingbudui
版本:1.0
日期:2019-07-15
功能:判断密码强度
"""
def check_number_str(password_str):
"""
判断字符串是否包含数字
"""
for c in password_str:
if c.isnumeric():
return True
return False
def check_letter_str(password_str):
"""
判断字符串是否包含字母
"""
for c in password_str:
if c.isalpha():
return True
return False
def main():
"""
主函数
"""
pass
password = input('请输入密码:')
# 密码强度
strength_level = 0
# 规则1:密码长度大于8位
if len(password) >= 8:
strength_level += 1
else:
print('密码长度必须大于8位')
# 规则2:密码包含数字
if check_number_str(password):
strength_level += 1
else:
print('密码要求包含数字!')
# 规则3:密码包含字母
if check_letter_str(password):
strength_level += 1
else:
print('密码要求包含字母!')
if strength_level == 3:
print('密码强度合格!')
else:
print('密码强度不合格!')
if __name__ == '__main__':
main()