在 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