案例6——判断密码强弱

案例描述

  • 密码强度:是指一个密码对抗猜测或时暴力破解的有效程度;一般是指一个未授权的访问者得到正确密码的平均尝试次数
  • 强密码可以降低安全漏洞的整体风险
  • 简易版(常用)规则:
    • 密码长度至少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
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值