码迷,mamicode.com
首页 > 其他好文 > 详细

密码强度等级

时间:2016-08-17 06:42:07      阅读:256      评论:0      收藏:0      [点我收藏+]

标签:

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

       一、密码长度:

       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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!