华为oj初级 密码强度等级

    xiaoxiao2021-03-25  86

    描述 密码按如下规则进行计分,并根据不同的得分为密码进行安全等级划分。 一、密码长度: 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; }

    知识点 枚举 运行时间限制 10M 内存限制 128 输入 输入一个string的密码 输出 输出密码等级 样例输入 38$@NoNoNo 样例输出 VERY_SECURE

    #include <iostream> #include<vector> #include<algorithm> #include<string> using namespace std; int sco_len(string &s){ if (s.size() <= 4){ return 5; } else if (s.size() <= 7){ return 10; } else{ return 25; } } int sco(string &s){ int score = 0; int cnt1 = 0; int cnt2 = 0; int cnt3 = 0; int cnt4 = 0; for (int i = 0; i < s.size(); i++){ if (isalpha(s[i])){ if (isupper(s[i])){ cnt1++; } else{ cnt2++; } } else if (isdigit(s[i])){ cnt3++; } else{ cnt4++; } } if (cnt1 != 0 && cnt2 != 0 && cnt3 != 0 && cnt4 != 0){ score += 5; } else if ((cnt1 || cnt2) && cnt3&&cnt4){ score += 3; } else if ((cnt1 || cnt2) && cnt3) { score += 2; } if (cnt1&&cnt2){ score += 20; } else if (cnt1 || cnt2){ score += 10; } if (cnt3 > 1){ score += 20; } else if (cnt3 == 1){ score += 10; } if (cnt4 > 1){ score += 25; } else if (cnt4 == 1){ score += 10; } return score; } int main(){ string s; getline(cin, s); int score_len = 0; int score = 0; score_len = sco_len(s); score = score_len + sco(s); if (score >= 90) cout << "VERY_SECURE"; else if (score >= 80) cout << "SECURE"; else if (score >= 70) cout << "VERY_STRONG"; else if (score >= 60) cout << "STRONG"; else if (score >= 50) cout << "AVERAGE"; else if (score >= 25) cout << "WEAK"; else cout << "VERY_WEAK"; return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-34631.html

    最新回复(0)