密码强度

题目描述:

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

       一、密码长度:

       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

示例:

输入:

38$@NoNoNo

输出:

VERY_SECURE

代码:

#include <iostream>
using namespace std;

int main()
{
    string Str;
    while(getline(cin,Str))
    {
        int point=0;
        if(Str.size()<=4)
            point+=5;
        else if(Str.size()>4&&Str.size()<=7)
            point+=10;
        else
            point+=25;
        
       int i=0;
       bool bigzimu=false;
       int shuzi=0;
       bool smallzimu=false;
       int fuhao=0;
       bool zimu=false;
       while(i<Str.size())
       {
           if(Str[i]>='a'&&Str[i]<='z')
           {
               smallzimu=true;
               //zimu=true;
           }
           else if(Str[i]>='A'&&Str[i]<='Z')
           {
               bigzimu=true;
               //zimu=true;
           }
           else if(Str[i]>='0'&&Str[i]<='9')
           {
               shuzi+=1;;
           }
           else
           {
               fuhao+=1;
           }
           i++;
       }
        
        if(smallzimu&&bigzimu)
            point+=20;
        else if(smallzimu||bigzimu)
            point+=10;
        else
            point=point;
        
        if(shuzi>1)
            point+=20;
        else if(shuzi==1)
            point+=10;
        else
            point=point;
        
        if(fuhao>1)
            point+=25;
        else if(fuhao==1)
            point+=10;
        else
            point=point;
        
        if(smallzimu&&bigzimu&&shuzi&&fuhao)
            point+=5;
        else if((smallzimu||bigzimu)&&shuzi&&fuhao)
            point+=3;
        else if((smallzimu||bigzimu)&&shuzi)
            point+=2;
        
        
        string res;
        if(point>=90)
            res="VERY_SECURE";
        else if(point>=80)
            res="SECURE";
        else if(point>=70)
            res="VERY_STRONG";
        else if(point>=60)
            res="STRONG";
        else if(point>=50)
            res="AVERAGE";
        else if(point>=40)
            res="WEAK";
        else
            res="VERY_WEAK";
        
        cout<<res<<endl;
    }
    
    
    return 0;
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
密码强度是指密码的安全程度,即密码对于破解者来说有多难以猜测或者破解。在Python中,可以通过一些方法来评估密码的强度。 一种常见的方法是使用正则表达式来检查密码是否符合一定的规则,例如包含大写字母、小写字母、数字和特殊字符等。可以使用re模块来实现正则表达式的匹配。 另一种方法是计算密码的熵值,即密码中包含的信息量。熵值越高,密码越难以被猜测或者破解。可以使用math模块来计算熵值。 以下是一个简单的示例代码,用于评估密码的强度: ```python import re import math def check_password_strength(password): # 检查密码是否符合规则 if not re.match(r"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$", password): return "密码不符合规则" # 计算密码的熵值 entropy = 0 characters = set(password) for char in characters: p = password.count(char) / len(password) entropy -= p * math.log2(p) # 根据熵值评估密码强度 if entropy < 2: return "密码强度较弱" elif entropy < 3: return "密码强度一般" else: return "密码强度较高" # 测试 password = input("请输入密码:") strength = check_password_strength(password) print(strength) ``` 请注意,以上代码只是一个简单的示例,实际上评估密码强度是一个复杂的问题,需要考虑更多的因素。在实际应用中,建议使用成熟的密码强度评估库或者算法来确保密码的安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值