1. 程式人生 > >華為機試-密碼強度等級

華為機試-密碼強度等級

java程序 strong while oid ont || ascii wds tro

題目描述

密碼按如下規則進行計分,並根據不同的得分為密碼進行安全等級劃分。

一、密碼長度:

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

輸入

[email protected]

輸出

VERY_SECURE

Java程序代碼:

  1. import java.util.Scanner;
  2. public class Main {
  3. public static void main(String[] args) {
  4. Scanner scanner = new Scanner(System.in);
  5. while (scanner.hasNext()) {
  6. String string = scanner.nextLine();
  7. String result = GetPwdSecurityLevel(string);
  8. System.out.println(result);
  9. }
  10. }
  11. private static String GetPwdSecurityLevel(String string) {
  12. int length = string.length();// 1 長度
  13. int upChara = 0;// 2 大寫字母
  14. int downChara = 0;// 3 小寫字母
  15. int chara = 0;// 4 符號
  16. int number = 0;// 5 數字
  17. int sumScore = 0;
  18. for (int i = 0; i < length; i++) {
  19. if (string.charAt(i) >= ‘0‘ && string.charAt(i) <= ‘9‘) {
  20. number++;
  21. } else if (string.charAt(i) >= ‘a‘ && string.charAt(i) <= ‘z‘) {
  22. downChara++;
  23. } else if (string.charAt(i) >= ‘A‘ && string.charAt(i) <= ‘Z‘) {
  24. upChara++;
  25. } else {
  26. chara++;
  27. }
  28. }
  29. // 1 積分
  30. if (length <= 4) {
  31. sumScore += 5;
  32. } else if (length >= 8) {
  33. sumScore += 25;
  34. } else {
  35. sumScore += 10;
  36. }
  37. // 2積分
  38. if (upChara != 0 && downChara != 0) {
  39. sumScore += 20;
  40. } else if (upChara == 0 && downChara == 0) {
  41. sumScore += 0;
  42. } else {
  43. sumScore += 10;
  44. }
  45. // 3 數字
  46. if (number == 0) {
  47. sumScore += 0;
  48. } else if (number == 1) {
  49. sumScore += 10;
  50. } else {
  51. sumScore += 20;
  52. }
  53. // 4 符號
  54. if (chara == 0) {
  55. sumScore += 0;
  56. } else if (chara == 1) {
  57. sumScore += 10;
  58. } else {
  59. sumScore += 25;
  60. }
  61. // 5獎勵
  62. if ((upChara > 0 || downChara > 0) && number > 0) {
  63. if (chara > 0) {
  64. sumScore += 3;
  65. } else {
  66. sumScore += 2;
  67. }
  68. } else if (upChara > 0 && downChara > 0 && number > 0 && chara > 0) {
  69. sumScore += 5;
  70. }
  71. return sumScore >= 90 ? "VERY_SECURE"
  72. : sumScore >= 80 ? "SECURE"
  73. : sumScore >= 70 ? "VERY_STRONG"
  74. : sumScore >= 60 ? "STRONG"
  75. : sumScore >= 50 ? "AVERAGE" : sumScore >= 25 ? "WEAK" : "VERY_WEAK";
  76. }
  77. }

華為機試-密碼強度等級