在 Java 中验证密码

Waleed 2023年10月12日
在 Java 中验证密码

在创建登录页面时,我们经常需要验证密码并检查它是否符合正确的标准。
验证密码包括根据下面讨论的密码策略检查密码是否正确:

  1. 标准密码至少包含八个字符
  2. 普通密码至少包含两个大写字母
  3. 标准密码包含两个小写字母
  4. 标准密码包括两个特殊符号

Java 中验证密码的算法

  1. 在检查我们的密码之前,我们必须指定一个理想的密码应该包含多少个大写、小写、特殊字母或数字。为此,我们定义了 int 类型的变量 MAX、MIN_Uppercase、MIN_Lowercase、Num_Digits 和 Special。
  2. 要计算密码有多少个大写、小写、数字或特殊字符,我们将声明整数类型的变量 uppercaseCounter、lowercaseCounter、special 和 digitCounter。
  3. 声明计数器变量后,我们将它们初始化为 0。通过将计数器变量初始化为 0,我们确保它们不包含任何垃圾值。
  4. 我们将首先要求用户输入密码以验证给定的密码。要获取用户输入,我们首先在程序中导入 Scanner 类,然后创建一个对象。在我们的 Scanner 程序对象中,输入了类。
  5. Scanner 函数有一个默认函数 .nextLine(),它读取用户输入,然后将其存储在字符串中。
  6. 然后我们迭代所有密码字符并将每个字符存储在 char 类型的 c 变量中。
  7. 字符数据类型有一个默认函数 isUpperCaseisLowerCaseisDigit。使用这些默认函数,我们计算密码包含多少个大写和小写字符、特殊符号或数字。
  8. 如果存储在 c 变量中的字符是大写的,我们将 uppercaseCount 变量加 1。
  9. 如果存储在 c 变量中的字符是小写的,我们将 lowercaseCounter 变量加 1。
  10. 如果存储在 c 中的字符是数字,我们将 digitCounter 变量加 1。
  11. 如果存储在 c 中的字符是特殊符号,我们将特殊计数器加 1。
  12. 完成后,我们运行条件语句来检查我们的密码是否包含指定的字符,如@#%、小写和大写字母以及数字。
  13. 如果密码符合我们指定的标准,我们将打印验证密码语句。
    14、如果密码不符合我们的全部或部分条件,我们首先显示你的密码不包含以下内容的声明。
  14. 最后,我们将检查指定条件的密码不满足,然后相应地显示消息。
package sampleProject;
import java.util.*;
import java.util.Scanner;

public class Codesample {
  public static void main(String[] args) {
    // Specify the maximum number of letters in a password
    final int MAX = 8;

    // Specifying the number of uppercase letters in password
    final int MIN_Uppercase = 2;
    // Specifying the minimum lowercase letters in password
    final int MIN_Lowercase = 2;
    // Specifying the number of digits in a password
    final int NUM_Digits = 2;
    // Specify the minimum number of special case letters
    final int Special = 2;
    // Count number of uppercase letters in a password
    int uppercaseCounter = 0;
    // Counter lowercase letters in a password
    int lowercaseCounter = 0;
    // Count digits in a password
    int digitCounter = 0;
    // count special case letters in a password
    int specialCounter = 0;

    // Take input of password from the user

    System.out.println("Enter the password\n");

    Scanner input = new Scanner(System.in);

    // Take password input from the user and save it in the string password

    String password = input.nextLine();

    for (int i = 0; i < password.length(); i++) {
      char c = password.charAt(i);
      if (Character.isUpperCase(c))
        uppercaseCounter++;
      else if (Character.isLowerCase(c))
        lowercaseCounter++;
      else if (Character.isDigit(c))
        digitCounter++;
      if (c >= 33 && c <= 46 || c == 64) {
        specialCounter++;
      }
    }

    if (password.length() >= MAX && uppercaseCounter >= MIN_Uppercase
        && lowercaseCounter >= MIN_Lowercase && digitCounter >= NUM_Digits
        && specialCounter >= Special) {
      System.out.println("Valid Password");
    } else {
      System.out.println("Your password does not contain the following:");
      if (password.length() < MAX)
        System.out.println(" atleast 8 characters");
      if (lowercaseCounter < MIN_Lowercase)
        System.out.println("Minimum lowercase letters");
      if (uppercaseCounter < MIN_Uppercase)
        System.out.println("Minimum uppercase letters");
      if (digitCounter < NUM_Digits)
        System.out.println("Minimum number of numeric digits");
      if (specialCounter < Special)
        System.out.println("Password should contain at lest 3 special characters");
    }
  }
}

输出:

Your password does not contain the following:
At least 8 characters
Minimum lowercase letters
Minimum, uppercase letters
Minimum number of numeric digits
Password should contain at least 3 special characters

Enter the password

DElft@#90
Valid Password