在 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