在 Java 中验证密码

Waleed 2022年5月1日
在 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