87 密码强度等级

题目描述
密码按如下规则进行计分,并根据不同的得分为密码进行安全等级划分。

   一、密码长度:

   5 分: 小于等于4 个字符

   10 分: 5 到7 字符

   25 分: 大于等于8 个字符

   二、字母:

   0 分: 没有字母

   10 分: 全都是小(大)写字母

   20 分: 大小写混合字母

   三、数字:

   0 分: 没有数字

   10 分: 1 个数字

   20 分: 大于1 个数字

   四、符号:

   0 分: 没有符号

   10 分: 1 个符号

   25 分: 大于1 个符号

   五、奖励:

   2 分: 字母和数字

   3 分: 字母、数字和符号

   5 分: 大小写字母、数字和符号

   最后的评分标准:

   >= 90: 非常安全

   >= 80: 安全(Secure)

   >= 70: 非常强

   >= 60: 强(Strong)

   >= 50: 一般(Average)

   >= 25: 弱(Weak)

   >= 0:  非常弱

对应输出为:

VERY_WEAK,

WEAK,

AVERAGE,

STRONG,

VERY_STRONG,

SECURE,

VERY_SECURE

   请根据输入的密码字符串,进行安全评定。

   注:

   字母:a-z, A-Z

   数字:-9

   符号包含如下: (ASCII码表可以在UltraEdit的菜单view->ASCII Table查看)

   !"#$%&'()*+,-./     (ASCII码:x21~0x2F)

   :;<=>?@             (ASCII<=><=><=><=><=>码:x3A~0x40)

   [\]^_`              (ASCII码:x5B~0x60)

{|}~ (ASCII码:x7B~0x7E)

接口描述:

Input Param
String pPasswordStr: 密码,以字符串方式存放。

Return Value
根据规则评定的安全等级。

public static Safelevel GetPwdSecurityLevel(String pPasswordStr)
{
/在这里实现功能/
return null;
}

输入描述:
输入一个string的密码

输出描述:
输出密码等级

示例1
输入
38$@NoNoNo
输出
VERY_SECURE

while True:
    try:
        string=input()
        result=0
        if len(string)<=4:
            result+=5
        elif 5<=len(string)<=7:
            result+=10
        else:
            result+=25
        #遍历字符串,分别存入digitlist,alphalist,symbollist,然后计数加分
        digitlist,alphalist,symbollist=[],[],[]
        for i in string:
            if i.isalpha():
                alphalist.append(i)
            elif i.isdigit():
                digitlist.append(i)
            else:
                symbollist.append(i)
        upperloweralpha=[0,0]
        for i in alphalist:
            if "a"<=i<="z":
                upperloweralpha[0]=1#存在小写字母,记为1
            if 'A'<=i <='Z':
                upperloweralpha[1]=1#存在大写字母,记为1
        sum=upperloweralpha[0]+upperloweralpha[1]#大小写一共
        if sum==1:
            result+=10
        if sum==2:
            result+=20
        if len(digitlist)==1:
            result+=10
        if len(digitlist)>=1:
            result+=20
        if len(symbollist)==1:
            result+=10
        if len(symbollist)>=1:
            result+=25
        if len(alphalist)!=0 and len(digitlist)!=0:
            result+=2
        elif len(alphalist)!=0 and len(digitlist)!=0 and len(symbollist)!=0:
            result+=3
        elif sum==2 and len(alphalist)!=0 and len(digitlist)!=0 and len(symbollist)!=0:
            result+=5
        else:
            pass
        if result >= 90:
            print('VERY_SECURE')
        elif result >= 80:
            print('SECURE')
        elif result >= 70:
            print('VERY_STRONG')
        elif result >= 60:
            print('STRONG')
        elif result >= 50:
            print('AVERAGE')
        elif result >= 25:
            print('WEAK')
        else:
            print('VERY_WEAK')
    except:
        break
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值