案例描述
- 密码强度:是指一个密码对抗猜测或时暴力破解的有效程度;一般是指一个未授权的访问者得到正确密码的平均尝试次数
- 强密码可以降低安全漏洞的整体风险
- 简易版(常用)规则:
- 密码长度至少8位
- 密码含有数字
- 密码含有字母
案例分析
- 设置一个变量strength_level用于记录密码的强度,初始为0。满足一个条件,对其加1
- 长度判断:使用len()方法
- 包含数字判断: 使用isnumeric()方法
- 包含字母判断:使用isalpha()方法
- 如果strength_level等于3,密码强度合格,否则不合格
项目实现
- str. isnumeric()
检测字符串是否只由数字组成- str. isalpha()
检测字符串是否只由字母组成- str.islower()
检测字符串中所有的字母是否都为小写- str.isupper()
检测字符串中所有的字母是否都为大写- 更多isxxx()方法请参考:
https://docs.python.org/3/library/stdtypes.html#string-methods
V1.0——判断密码强弱
由于isnumeric()判断字符串是否只由数字组成,isalpha()判断字符串是否只由字母组成。考虑使用循环判断每个字符是否为字母或者数字,如果满足则强度加1。
代码实现:
def check_number_exist(password_str):
"""
功能:判断密码中是否包含数字
"""
for x in password_str:
if x.isnumeric():
return True
return False
def check_letter_exist(password_str):
"""
功能:判断密码中是否包含字母
"""
for x in password_str:
if x.isalpha():
return True
return False
def main():
password = input('请输入密码:')
# 密码强度
strength_level = 0
# 规则1:密码长度大于8
if len(password) > 8:
strength_level += 1
else:
print('密码长度大于8位')
# 规则2:密码是否包含字母
if check_number_exist(password):
strength_level += 1
else:
print('密码中必须包含数字!')
# 规则3:密码是否包含字母
if check_letter_exist(password):
strength_level += 1
else:
print('密码中必须包含字母!')
if strength_level == 3:
print('密码强度符合要求!')
else:
print('密码强度不符合要求!')
if __name__ == '__main__':
main()
V2.0——跳出循环(break),设置循环输入密码次数
- break语句
终止整个循环- continue语句
只终止本次循环,而不终止整个循环的执行
代码实现:
def check_number_exist(password_str):
"""
功能:判断密码中是否包含数字
"""
is_number_exist = False
for x in password_str:
if x.isnumeri