华为机试HJ87:密码强度等级

news/2024/11/25 16:24:23/

作者:翟天保Steven
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处

题目描述:

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

一、密码长度:

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

数字:0-9

符号包含如下: (ASCII码表可以在UltraEdit的菜单view->ASCII Table查看)

!"#$%&'()*+,-./     (ASCII码:0x21~0x2F)

:;<=>?@             (ASCII码:0x3A~0x40)

[\]^_`              (ASCII码:0x5B~0x60)

{|}~                (ASCII码:0x7B~0x7E)

提示:

1 <= 字符串的长度<= 300

输入描述:

本题含有多组输入样例。
每组样例输入一个string的密码

输出描述:

每组样例输出密码等级

示例:

输入:

38$@NoNoNo
123

输出:

VERY_SECURE
WEAK

说明:

第一组样例密码强度为95分。
第二组样例密码强度为25分。

解题思路:

这题是字符串分析题。首先分析密码长度,进行加分;再遍历一遍,遍历过程中统计数字、大小写字母和符号的相关信息;按照标准进行加分;最后按照分数输出不同string结果,完成。

测试代码:

#include <iostream>
#include <string>using namespace std;string SecurityLevel(string password)
{int sum=0;int size=password.size();// 密码长度if(size<=4)sum+=5;else if(size>4&&size<=7)sum+=10;elsesum+=25;// 遍历bool noletter=true;bool haveupper=false;bool haveLower=false;bool havenumber=false;bool havesymbol=false;int numsize=0;int symbolsize=0;for(int i=0;i<size;++i){if(password[i]>='0'&&password[i]<='9'){numsize++;havenumber=true;}else if(password[i]>='a'&&password[i]<='z'){noletter=false;haveLower=true;}else if(password[i]>='A'&&password[i]<='Z'){noletter=false;haveupper=true;}else{symbolsize++;havesymbol=true;}}// 字母if(haveupper&&haveLower)sum+=20;else if((haveupper&&!haveLower)||(!haveupper&&haveLower))sum+=10;// 数字if(numsize>1)sum+=20;else if(numsize==1)sum+=10;// 数字if(symbolsize>1)sum+=25;else if(symbolsize==1)sum+=10;// 奖励if(haveupper&&haveLower&&havenumber&&havesymbol)sum+=5;else if(!noletter&&havenumber&&havesymbol)sum+=3;else if(!noletter&&havenumber)sum+=2;//结果if(sum>=90)return "VERY_SECURE";else if(sum>=80)return "SECURE";else if(sum>=70)return "VERY_STRONG";else if(sum>=60)return "STRONG";else if(sum>=50)return "AVERAGE";else if(sum>=25)return "WEAK";elsereturn "VERY_WEAK";
}int main()
{string password;while(getline(cin,password)){cout<<SecurityLevel(password)<<endl;}return 0;
}

http://www.ppmy.cn/news/694466.html

相关文章

linux 动态密码,Linux动态密码

关于Linux动态密码的好处就不用多说了。 我的系统的是rhel5 安装软件包&#xff1a; expect-5.43.0-5.1.i386.rpm ## RHEL5自带有 利用命令mkpasswd生成动态密码。 mkpasswd的用法&#xff1a; #mkpasswd 参数 用户名 -l 定义生成密码的长度&#xff0c;默认9 -d 定义密…

华为设备设置终端密码

文章目录 1、交换机设备2、路由器设备3、防火墙设备 1、交换机设备 进入系统视图&#xff1a;system-view修改设备名字&#xff1a;[Huawei]sysname Sw1进入console口&#xff1a;[Sw1]user-interface console 0设置密码类型&#xff1a;[Sw1-ui-console0]authentication-mode…

华为OD机试 - 猜密码(Java JS Python)

题目描述 小杨申请了一个保密柜,但是他忘记了密码。只记得密码都是数字,而且所有数字都是不重复的。 请你根据他记住的数字范围和密码的最小数字数量,帮他算下有哪些可能的组合,规则如下: 输出的组合都是从可选的数字范围中选取的,且不能重复;输出的密码数字要按照从小…

STM32+华为云IoTDA,带你设计一个属于自己的动态密码锁

本文分享自华为云社区《STM32华为云IOT设计的动态密码锁》&#xff0c;作者&#xff1a;DS小龙哥。 1. 前言 随着人们生活水平的提高及科学技术的发展&#xff0c;个人信息保护显得至关重要&#xff0c;设计了一款物联网智能电子密码锁&#xff0c;以STM32单片机为主控制器,由…

Quiz 12: Regular Expressions | Python for Everybody 配套练习_解题记录

文章目录 Python for Everybody课程简介Regular Expressions单选题&#xff08;1-8&#xff09;操作题Regular Expressions Python for Everybody 课程简介 Python for Everybody 零基础程序设计&#xff08;Python 入门&#xff09; This course aims to teach everyone the …

Redis高可用(主从复制、哨兵模式和Cluster集群)

文章目录 一、Redis高可用1.持久化2.主从复制3.哨兵4.Cluster集群 二、主从复制1.概念2.作用3.主从复制流程4.配置主从复制 三、哨兵模式1.功能2.作用3.组成4.故障转移机制7.故障模拟8.恢复故障节点 四、Cluster群集1.简介2.作用&#xff08;1&#xff09;数据分区&#xff08;…

Java tcomm 例子_使用CICSAPI和ECI.ppt

开发(2) – 使用CICS API和ECI 刘睿 概要 TXSeries编程框架 TXSeries/CICS客户机程序 TXSeries服务器程序 TXSeries编程框架 基于TXSeries的三层应用开发环境 TXSeries的应用开发支持框架 交易(Transaction)&#xff0c;任务(Task)和逻辑处理单元(LUW)的概念 交易(Transaction)…

ECI支持大规格实例

信息摘要&#xff1a; ECI支持大规格实例 适用客户&#xff1a; 基因计算及其他需要大规格计算资源的场景 版本/规格功能&#xff1a; 为满足基因计算及其他需要大规格计算资源的场景&#xff0c;ECI 推出了指定大规格实例&#xff0c;每个容器实例可使用规格见下表。 vCPU 内存…