在 Java 中驗證密碼
Waleed
2023年10月12日
在建立登入頁面時,我們經常需要驗證密碼並檢查它是否符合正確的標準。
驗證密碼包括根據下面討論的密碼策略檢查密碼是否正確:
- 標準密碼至少包含八個字元
- 普通密碼至少包含兩個大寫字母
- 標準密碼包含兩個小寫字母
- 標準密碼包括兩個特殊符號
Java 中驗證密碼的演算法
- 在檢查我們的密碼之前,我們必須指定一個理想的密碼應該包含多少個大寫、小寫、特殊字母或數字。為此,我們定義了 int 型別的變數 MAX、MIN_Uppercase、MIN_Lowercase、Num_Digits 和 Special。
- 要計算密碼有多少個大寫、小寫、數字或特殊字元,我們將宣告整數型別的變數 uppercaseCounter、lowercaseCounter、special 和 digitCounter。
- 宣告計數器變數後,我們將它們初始化為 0。通過將計數器變數初始化為 0,我們確保它們不包含任何垃圾值。
- 我們將首先要求使用者輸入密碼以驗證給定的密碼。要獲取使用者輸入,我們首先在程式中匯入
Scanner
類,然後建立一個物件。在我們的Scanner
程式物件中,輸入了類。 Scanner
函式有一個預設函式.nextLine()
,它讀取使用者輸入,然後將其儲存在字串中。- 然後我們迭代所有密碼字元並將每個字元儲存在 char 型別的
c
變數中。 - 字元資料型別有一個預設函式
isUpperCase
、isLowerCase
和isDigit
。使用這些預設函式,我們計算密碼包含多少個大寫和小寫字元、特殊符號或數字。 - 如果儲存在 c 變數中的字元是大寫的,我們將 uppercaseCount 變數加 1。
- 如果儲存在 c 變數中的字元是小寫的,我們將 lowercaseCounter 變數加 1。
- 如果儲存在 c 中的字元是數字,我們將
digitCounter
變數加 1。 - 如果儲存在 c 中的字元是特殊符號,我們將特殊計數器加 1。
- 完成後,我們執行條件語句來檢查我們的密碼是否包含指定的字元,如
@#%
、小寫和大寫字母以及數字。 - 如果密碼符合我們指定的標準,我們將列印
驗證密碼
語句。
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