zoukankan      html  css  js  c++  java
  • 华为机试-密码强度等级

    题目描述

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

           一、密码长度:

           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)

    接口描述:

     Input Param 
          String pPasswordStr:    密码,以字符串方式存放。

     Return Value
       根据规则评定的安全等级。

     public static Safelevel GetPwdSecurityLevel(String pPasswordStr)
     {
         /*在这里实现功能*/
      return null;
     }

    输入描述:

    输入一个string的密码

    输出描述:

    输出密码等级

    示例1

    输入

    38$@NoNoNo

    输出

    VERY_SECURE

    Java程序代码:

    1. import java.util.Scanner;  
    2.   
    3. public class Main {  
    4.   
    5.     public static void main(String[] args) {  
    6.   
    7.         Scanner scanner = new Scanner(System.in);  
    8.         while (scanner.hasNext()) {  
    9.             String string = scanner.nextLine();  
    10.   
    11.             String result = GetPwdSecurityLevel(string);  
    12.             System.out.println(result);  
    13.         }  
    14.   
    15.     }  
    16.   
    17.     private static String GetPwdSecurityLevel(String string) {  
    18.         int length = string.length();// 1 长度  
    19.         int upChara = 0;// 2 大写字母  
    20.         int downChara = 0;// 3 小写字母  
    21.         int chara = 0;// 4 符号  
    22.         int number = 0;// 5 数字  
    23.         int sumScore = 0;  
    24.         for (int i = 0; i < length; i++) {  
    25.             if (string.charAt(i) >= '0' && string.charAt(i) <= '9') {  
    26.                 number++;  
    27.             } else if (string.charAt(i) >= 'a' && string.charAt(i) <= 'z') {  
    28.                 downChara++;  
    29.             } else if (string.charAt(i) >= 'A' && string.charAt(i) <= 'Z') {  
    30.                 upChara++;  
    31.             } else {  
    32.                 chara++;  
    33.             }  
    34.   
    35.         }  
    36.         // 1 积分  
    37.         if (length <= 4) {  
    38.             sumScore += 5;  
    39.         } else if (length >= 8) {  
    40.             sumScore += 25;  
    41.         } else {  
    42.             sumScore += 10;  
    43.         }  
    44.         // 2积分  
    45.         if (upChara != 0 && downChara != 0) {  
    46.             sumScore += 20;  
    47.         } else if (upChara == 0 && downChara == 0) {  
    48.             sumScore += 0;  
    49.         } else {  
    50.             sumScore += 10;  
    51.         }  
    52.   
    53.         // 3 数字  
    54.         if (number == 0) {  
    55.             sumScore += 0;  
    56.         } else if (number == 1) {  
    57.             sumScore += 10;  
    58.         } else {  
    59.             sumScore += 20;  
    60.         }  
    61.   
    62.         // 4 符号  
    63.         if (chara == 0) {  
    64.             sumScore += 0;  
    65.         } else if (chara == 1) {  
    66.             sumScore += 10;  
    67.         } else {  
    68.             sumScore += 25;  
    69.         }  
    70.   
    71.         // 5奖励  
    72.         if ((upChara > 0 || downChara > 0) && number > 0) {  
    73.             if (chara > 0) {  
    74.                 sumScore += 3;  
    75.             } else {  
    76.                 sumScore += 2;  
    77.             }  
    78.   
    79.         } else if (upChara > 0 && downChara > 0 && number > 0 && chara > 0) {  
    80.             sumScore += 5;  
    81.         }  
    82.   
    83.         return sumScore >= 90 ? "VERY_SECURE"  
    84.                 : sumScore >= 80 ? "SECURE"  
    85.                         : sumScore >= 70 ? "VERY_STRONG"  
    86.                                 : sumScore >= 60 ? "STRONG"  
    87.                                         : sumScore >= 50 ? "AVERAGE" : sumScore >= 25 ? "WEAK" : "VERY_WEAK";  
    88.     }  
    89.   
    90. }  
  • 相关阅读:
    ASP.NET AJAX__序言
    LINQ to SQL(4):OR设计器
    ASP.NET AJAX(11)__ScriptManager
    ASP.NET AJAX(15)__构建高性能ASP.NET AJAX应用
    LINQ to SQL(2):生成对象模型
    LINQ to SQL(3):增删改查
    ASP.NET AJAX(14)__UpdatePanel与服务器端脚本控件
    ASP.NET AJAX(13)__利用Microsoft AJAX Library开发客户端组件
    LINQ to SQL(1):基础入门
    ASP.NET AJAX(12)__浏览器兼容功能
  • 原文地址:https://www.cnblogs.com/wwjldm/p/7102406.html
Copyright © 2011-2022 走看看