题目描述
密码按如下规则进行计分,并根据不同的得分为密码进行安全等级划分。
一、密码长度:
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)
输入描述: 输入一个string的密码
输出描述: 输出密码等级
示例1 输入 38$@NoNoNo 输出 VERY_SECURE
实现代码:
package cn.c_shuang.demo82; import java.util.Scanner; /** * 密码强度等级 * @author Cshuang * */ public class Main { public static void main(String[] args){ Scanner in=new Scanner(System.in); while(in.hasNext()){ String pwd=in.next(); int score=getScore(pwd); if(score>=90){ System.out.println("VERY_SECURE"); }else if(score>=80){ System.out.println("SECURE"); }else if(score>=70){ System.out.println("VERY_STRONG"); }else if(score>=60){ System.out.println("STRONG"); }else if(score>=50){ System.out.println("AVERAGE"); }else if(score>=25){ System.out.println("WEAK"); }else if(score>=0){ System.out.println("VERY_WEAK"); } } in.close(); } public static int getScore(String pwd){ char[] chs=pwd.toCharArray(); int a=0;//数字个数 int b=0;//符号个数 int c=0;//大写字母个数 int d=0;//小写字母个数 int sum=0; for(int i=0;i<chs.length;i++){ if(Character.isDigit(chs[i])){ a++; }else if(Character.isUpperCase(chs[i])){ c++; }else if(Character.isLowerCase(chs[i])){ d++; }else{ b++; } } if(chs.length<=4){ sum+=5; }else if(chs.length>=5&&chs.length<=7){ sum+=10; }else if(chs.length>=8){ sum+=25; } if((c>0&&d==0)||(c==0&&d>0)){ sum+=10; }else if(c>0&&d>0){ sum+=20; } if(a==1){ sum+=10; }else if(a>1){ sum+=20; } if(b==1){ sum+=10; }else if(b>1){ sum+=25; } if((c+d>0)&&(a>0)&&(b==0)){ sum+=2; }else if((c+d>0)&&(a>0)&&(b>0)){ sum+=3; }else if((c>0)&&(d>0)&&(a>0)&&(b>0)){ sum+=5; } return sum; } }