标签:
密码按如下规则进行计分,并根据不同的得分为密码进行安全等级划分。
一、密码长度:
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的密码
输出描述:
输出密码等级
输入例子:
38$@NoNoNo
输出例子:
VERY_SECURE
1 import java.util.*; 2 3 public class Main{ 4 public static void main(String[] args){ 5 Scanner sc = new Scanner(System.in); 6 while(sc.hasNext()){ 7 String s = sc.nextLine(); 8 int sum = 0; 9 if(s.length()<=4) 10 sum+=5; 11 else if(s.length()>=5&&s.length()<=7) 12 sum+=10; 13 else if(s.length()>=8) 14 sum+=25; 15 16 int count1 = 0,count2 = 0,count3 = 0,count4 = 0; 17 for(int i=0;i<s.length();i++){ 18 if(s.charAt(i)>=‘A‘&&s.charAt(i)<=‘Z‘) 19 count1++; 20 else if(s.charAt(i)>=‘a‘&&s.charAt(i)<=‘z‘) 21 count2++; 22 else if(s.charAt(i)>=‘0‘&&s.charAt(i)<=‘9‘) 23 count3++; 24 else if((s.charAt(i)>=0x21&&s.charAt(i)<=0x2F)||(s.charAt(i)>=0x3A&&s.charAt(i)<=0x40)||(s.charAt(i)>=0x5B&&s.charAt(i)<=0x60)||(s.charAt(i)>=0x7B&&s.charAt(i)<=0x7E)) 25 count4++; 26 } 27 if(count1==0&&count2==0) 28 sum+=0; 29 else if((count1==0&&count2!=0)||(count1!=0&&count2==0)) 30 sum+=10; 31 else 32 sum+=20; 33 if(count3==0) 34 sum+=0; 35 else if(count3==1) 36 sum=+10; 37 else 38 sum+=25; 39 if(count4==0) 40 sum+=0; 41 else if(count4==1) 42 sum=+10; 43 else 44 sum+=25; 45 if((count1+count2)!=0&&count3!=0&&count4==0) 46 sum+=2; 47 else if((count1+count2)!=0&&count3!=0&&count4!=0) 48 sum+=3; 49 else if(((count1==0&&count2!=0)||(count1!=0&&count2==0))&&count3!=0&&count4!=0) 50 sum+=5; 51 52 int num = 0; 53 num = sum/10; 54 switch(num){ 55 case 9:System.out.println("VERY_SECURE");break; 56 case 8:System.out.println("SECURE");break; 57 case 7:System.out.println("VERY_STRONG");break; 58 case 6:System.out.println("STRONG");break; 59 case 5:System.out.println("AVERAGE");break; 60 default:{ 61 if(sum>=25)System.out.println("WEAK"); 62 else System.out.println("VERY_WEAK"); 63 } 64 } 65 } 66 } 67 }
if else 使用;switch--default使用。
标签:
原文地址:http://www.cnblogs.com/lydandan/p/5778425.html