盛大游戏 密码安全等级 模拟

题目描述

现公司要开发一个业务管理系统,要求注册环节的密码需要提示用户其安全等级,密码按如下规则进行计分,并根据不同的得分为密码进行安全等级划分。

​ 一、密码长度:

​ 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: 安全

​ 大于等于70: 非常强

​ 大于等于 60: 强

​ 大于等于 50: 一般

​ 大于等于 25: 弱

​ 大于等于0: 非常弱

对应输出为:

VERY_WEAK,

WEAK,

AVERAGE,

STRONG,

VERY_STRONG,

SECURE,

VERY_SECURE

输入描述:

输入一个自定义密码

输出描述:

输出对应安全等级

示例1

输入

dgsayd$%12

输出

SECURE
#include<iostream>
#include<algorithm>
using namespace std;
int s;
void check1(string str)
{
    if(str.length()>=8)
    {
        s+=25;
    }else if(str.length()>4)
    {
        s+=10;
    }else 
    {
        s+=5;
    }
}
void check2(string str)
{
    int len=str.length();
    int flag=0;
    for(int i=0;i<len;++i)
    {
        if(str[i]>'a' && str[i]<'z')
        {
            flag++;
            break;
        }
    }
    for(int i=0;i<len;++i)
    {
        if(str[i]>'A' && str[i]<'Z')
        {
            flag++;
            break;
        }
    }
    if(flag==1)
    {
        s+=10;
    }else if(flag==2)
    {
        s+=20;
    }
}
void check3(string str)
{
    int len=str.length();
    int flag=0;
    for(int i=0;i<len;++i)
    {
        if(str[i]>'0' && str[i]<'9')
        {
            flag++;
        }
    }
    if(flag==1)
    {
        s+=10;
    }else if(flag>1) 
    {
        s+=20;
    }
}
void check4(string str)
{
    int len=str.length();
    int flag=0;
    for(int i=0;i<len;++i)
    {
        if(  !( (str[i]>='0'&&str[i]<='9') || (str[i]>='a'&&str[i]<='z') || (str[i]>='A'&&str[i]<='Z') ) )
        {
            flag++;
        }
    }
    if(flag==1)
    {
        s+=10;
    }else if(flag>1) 
    {
        s+=25;
    }
}
void check5(string str)
{
    int len=str.length();
    int flag1=0,flag2=0,flag3=0,flag4=0;
    for(int i=0;i<len;++i)
    {
        if(str[i]>='0' && str[i]<='9')
        {
            flag1=1;
        }
        if(str[i]>='a' && str[i]<='z')
        {
            flag2=1;
        }
        if(str[i]>='A' && str[i]<='Z')
        {
            flag3=1;
        }
        if(  !( (str[i]>='0'&&str[i]<='9') || (str[i]>='a'&&str[i]<='z') || (str[i]>='A'&&str[i]<='Z') ) )
        {
            flag4=1;
        }
    }
    if(flag2 && flag3 && flag4 && flag1)
    {
        s+=5;
    }else if((flag2 || flag3) && flag1 && flag4)
    {
        s+=3;
    }else if((flag2 || flag3) && flag1)
    {
        s+=2;
    }
}
int main()
{
    string str;
    cin>>str;
    s=0;
    check1(str);
    check2(str);
    check3(str);
    check4(str);
    check5(str);
    //cout<<s<<endl;
    if(s>=90)
    {
        cout<<"VERY_SECURE"<<endl;
    }else if(s>=80)
    {
        cout<<"SECURE"<<endl;
    }else if(s>=70)
    {
        cout<<"VERY_STRONG"<<endl;
    }else if(s>=60)
    {
        cout<<"STRONG"<<endl;
    }else if(s>=50)
    {
        cout<<"AVERAGE"<<endl;        
    }else if(s>=25)
    {
        cout<<"WEAK"<<endl;        
    }else if(s>=0)
    {
        cout<<"VERY_WEAK"<<endl;
    }
    return 0;
}
Last modification:January 12th, 2020 at 01:05 am
如果觉得我的文章对你有用,请随意赞赏