判断安全等级

一、密码长度:

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: 非常弱
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
对应输出为:
VERY_SECURE
SECURE
VERY_STRONG
STRONG
AVERAGE
WEAK
VERY_WEAK

#include<stdio.h>
#include
#include
using namespace std;
class PassworldStr {
public:
int Alllength = 0;
void creat(const string& s1) {
int num = 0;//存储数字数量
int cha = 0;//存储字母数量
int cha1 = 0;//存储大写字母数量
int cha2 = 0;//存储小写字母数量
int sym = 0;//存储符号数量
int Length = s1.length();
if (Length <= 4) Alllength += 5;
if (Length >= 5 && Length <= 7) Alllength += 10;
if (Length >= 8) Alllength += 25;
for (int i = 0; i < Length; i++) {
if (s1[i] >= 48 && s1[i] <= 57) ++num;
if (s1[i] >= 65 && s1[i] <= 90) {
++cha1;
}
if (s1[i] >= 97 && s1[i] <= 122) {
++cha2;
}
if (s1[i] >= 33 && s1[i] <= 47
|| (s1[i] >= 58 && s1[i] <= 64)
|| (s1[i] >= 91 && s1[i] <= 96)
|| (s1[i] >= 123 && s1[i] <= 126))
++sym;
}
cha = cha1 + cha2;
if (num == 0);
if (num == 1) Alllength+=10;
if (num > 1) Alllength += 20;
if (cha == 0);
if (cha1 == Length || cha2 == Length) Alllength += 10;
if (cha1 > 0 && cha1 < Length - 1 && cha2>0 && cha2 < Length - 1) Alllength += 20;
if (sym == 0);
if (sym == 1) Alllength == 10;
if (sym > 1) Alllength += 25;
if (num + cha == Length) Alllength += 2;
if (num + cha+sym == Length) Alllength += 3;
if (cha1 != Length && cha2 != Length && (cha1 + cha2 + num + sym == Length)) Alllength += 5;
CheckString(Alllength);
}
int CheckString(int Allength) {
if (Allength >= 90) {
cout << “VERY_SECURE”<<endl;
return 0;
}
if (Allength >= 80) {
cout << “SECURE” << endl;
return 0;
}
if (Allength >= 70) {
cout << “VERY_STRONG”<<endl;
return 0;
}
if (Allength >= 60) {
cout << “STRONG”<<endl;
return 0;
}
if (Allength >= 50) {
cout << “AVERAGE”<<endl;
return 0;
}
if (Allength >= 25) {
cout << “WEAK”<<endl;
return 0;
}
else{
cout << “VERY_WEAK”<<endl;
return 0;
}
}
};
int main() {
PassworldStr p1;
string s1;
while (cin >> s1) {
p1.creat(s1);
}
return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值