华为机试:密码强度等级
一、题目:
密码按如下规则进行计分,并根据不同的得分为密码进行安全等级划分。
一、密码长度:
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_SECURE、SECURE,VERY_STRONG,STRONG,AVERAGE,WEAK,VERY_WEAK,
请根据输入的密码字符串,进行安全评定。
注:
字母:a-z, A-Z、数字:-9、符号包含如下: (ASCII码表可以在UltraEdit的菜单view->ASCII Table查看)、!"#$%&'()*+,-./ (ASCII码:x21~0x2F)、:;<=>?@ (ASCII<=><=><=><=><=>码:x3A~0x40)、[\]^_`(ASCII码:x5B~0x60)、{|}~ (ASCII码:x7B~0x7E)
输入描述:
本题含有多组输入样例。
每组样例输入一个string的密码
输出描述:
每组样例输出密码等级
二、输入输出示例:
![](/assets/blank.gif)
三、代码:
#include<iostream>
using namespace std;
#include<string>
int main()
{string s;while(cin>>s){int res = 0;//密码长度if(s.size() <= 4){res += 5;}else if(s.size() >= 5 && s.size() <= 7){res += 10;}else{res += 25;}//字母和数字int flag1,flag2; //flag1对应大写字母 flag2对应小写字母flag1 = flag2 = 0;int flag3 = 0; //flag3表示数字个数int flag4 = 0; //flag4表示符号个数for(int i=0;i<s.size();i++){if(s[i] >= 'A' && s[i] <= 'Z'){flag1 = 1;}else if(s[i] >= 'a' && s[i] <= 'z'){flag2 = 1;}else if(s[i] >= '0' && s[i] <= '9'){flag3++;}else{flag4++;}}//字母if(flag1 + flag2 == 1){res += 10;}else if(flag1 +flag2 == 2){res += 20;}//数字if(flag3 == 1){res += 10;}else if(flag3 > 1){res += 20;}//符号if(flag4 == 1){res += 10;}else if(flag4 > 1){res += 25;}//奖励if(flag1 + flag2 == 1 && flag3 != 0){res += 2;}else if(flag1 + flag2 == 1 && flag3 != 0 && flag4 != 0){res += 3;}else if(flag1 + flag2 == 2 && flag3 != 0 && flag4 != 0){res += 5;}//评分if(res >= 90){cout<<"VERY_SECURE"<<endl;}else if(res >= 80){cout<<"SECURE"<<endl;}else if(res >= 70){cout<<"VERY_STRONG"<<endl;}else if(res >= 60){cout<<"STRONG"<<endl;}else if(res >= 50){cout<<"AVERAGE"<<endl;}else if(res >= 25){cout<<"WEAK"<<endl;}else{cout<<"VERY_WEAK"<<endl;}}system("pause");return 0;
}
华为机试:密码强度等级相关推荐
- 华为机试-密码强度等级
题目描述 密码按如下规则进行计分,并根据不同的得分为密码进行安全等级划分. 一.密码长度: 5 分: 小于等于4 个字符 10 分: 5 到7 字符 25 分: 大于等于8 个字符 二.字母: 0 分 ...
- 【强烈推荐收藏】坚持3个月爆肝华为机试108题C++全解(适合新手入门,就业必刷套题)
作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 前言 金九银十,金三银四.当前正处于校招.社招的火热期,之前就想为正在筹备就业的同学们准备刷题宝 ...
- Java算法:华为机试算法(下),华为算法Java版,牛客网华为算法73~108题
接上篇:Java算法:华为机试算法(中),华为算法Java版,牛客网华为算法55~72题 HJ73 计算日期到天数转换 计算日期到天数转换 题目描述 根据输入的日期,计算是这一年的第几天.. 测试 ...
- 【华为机试】死记硬背没思路?一般人我劝你还是算了吧
大家好,我是哪吒. 五月份之前,如果你参加华为OD机试,收到的应该是2022Q4或2023Q1,这两个都是A卷题. 5月10日之后,很多小伙伴收到的是B卷,那么恭喜你看到本文了,抓紧刷题吧.B卷新题库 ...
- 华为机试108题(C 语言解答)
Nowcoder题库链接:华为机试 HJ1 字符串最后一个单词的长度(字符串) 输入:hello nowcoder输出:8说明: 最后一个单词为nowcoder,长度为8 示例代码: HJ1.c #i ...
- 【华为机试真题Java】从入门到入职-真题列表导读
写在前面 本专栏有100+道题(持续更新中),都是往期的HW机试真题,根据过往同学的经验基本都会考到原题.大家有什么不懂的都可以留言. 华为机试有三道题目,第一道和第二道属于简单或中等题,分值为100 ...
- 牛客在线编程-华为机试-中等
牛客在线编程题目-华为机试-中等 题号 题目 知识点 难度 通过率 HJ16 购物单 动态规划 中等 21.21% HJ17 坐标移动 字符串 中等 24.79% HJ20 密码验证合格程序 数组 字 ...
- 华为机试—介绍、剖析、建议
一.华为机试介绍 1.大致介绍 时间:120分钟 环境:Visual Studio(去年是vs2005).Visual C++.VC 6.0.Eclipse(Java) 题量:共3题 初级题--60分 ...
- 华为机试在线训练--牛客网(python)第四部分
华为机试在线训练–牛客网(python) 第四部分(31~40) 第三十一题:[中级]单词倒排 题目描述 对字符串中的所有单词进行倒排. 说明: 1.每个单词是以26个大写或小写英文字母构成: 2.非 ...
- 集合篇10.华为机试(涮题记录2)
华为机试 31.成绩排序(**not) 32. 矩阵乘法 33. 24点游戏算法(not) 34.配置文件恢复 35. 查找两个字符串a.b中的最长公共子串 36.MP3光标位置(not) 37.DN ...
最新文章
- 三层交换机----VRRP协议学习
- Exact跻身全球发展最快的云企业行列
- java B2B2C springmvc mybatis电子商务平台源码-Spring Cloud Security
- 直播实录 | 基于生成模型的事件流研究 + NIPS 2017 论文解读
- android 经纬度的范围内,在Android里如何判断一个指定的经纬度点是否落在一个多边形区域内...
- 浅谈android中的自定义封装易用的Dialog
- 新的“钉子户”来了!一加9RT将于10月13日正式亮相
- 【java学习之路】(java SE篇)(讨论与思考)异常中的try,catch,return的相关问题
- [PBRT-V3]怎么对比不同渲染算法的效果
- matlab学习路线
- yui compressor php,通过yuicompressor-2.4.7压缩css或js的php应用文件
- 在微信公众平台做HTML5游戏经验谈
- P1359 租用游艇
- 计算机上找不到运行程序怎么办,Win7出现窗口提示找不到应用程序怎么办?
- mysql localhost值_jdbc:mysql://localhost:3306/mysql这句话中localhost具体指什么的localhost?能修改么?在哪里配置的?...
- 口红会染唇是什么意思_最强科普!口红、唇膏、唇釉、染唇液究竟区别在哪?...
- 【AIOT】Python语音处理
- 网页添加QQ好友的方法
- 关于godot第三方功能增强版
- SPI通讯协议详解 基于STM32