HJ87 密码强度等级

该代码定义了一个Python函数,根据输入的密码包含的数字、大小写字母和符号数量,以及长度,计算并返回其安全等级,如VERY_SECURE,SECURE,等等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# HJ87 密码强度等级
def classOfpassword(password):
    num, up_char, down_char, other, score = 0, 0, 0, 0, 0
    srt_data = password.strip()
    for char in srt_data:
        if char.isdigit():    # 判断是否是数字
            num += 1
        elif char.isalpha():    # 判断是否是字母
            if char.upper() == char:
                up_char += 1    # 大写字母
            else:
                down_char += 1    # 小写字母
        else:
            other += 1    # 符号
    # 密码长度
    if len(srt_data) < 5:
        score += 5
    elif len(srt_data) < 8:
        score += 10
    else:
        score += 25
    # 密码大小写
    if up_char == 0 and down_char == 0:
        pass
    elif (up_char != 0 and down_char == 0) or (up_char == 0 and down_char != 0):
        score += 10
    else:
        score += 20
    # 密码数字个数
    if num == 0:
        pass
    elif num == 1:
        score += 10
    else:
        score += 20
    # 符号个数
    if other == 0:
        pass
    elif other == 1:
        score += 10
    else:
        score += 25
    # 奖励
    if num != 0 and (up_char + down_char) != 0 and other == 0:
        score += 2
    elif num != 0 and up_char != 0 and down_char != 0 and other != 0:
        score += 5
    elif num != 0 and (up_char + down_char) != 0 and other != 0:
        score += 3
    if score >= 90:
        return ('VERY_SECURE')
    elif score >= 80:
        return 'SECURE'
    elif score >= 70:
        return 'VERY_STRONG'
    elif score >= 60:
        return 'STRONG'
    elif score >= 50:
        return 'AVERAGE'
    elif score >= 25:
        return 'WEAK'
    else:
        return 'VERY_WEAK'


if __name__ == '__main__':
    inputstr1 = input('Enter a string: ')
    # inputstr2 = input('Enter a string: ')
    # inputnum = int(input('Enter a number: '))
    print(classOfpassword(inputstr1))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值