我需要编写一个程序来根据以下条件检查密码的强度,并将密码的类型输出为“太短”,“弱”,“中”或“强”
条件: 1)密码应为8个字符长 2)它应至少包含一个大写字母和一个小写字母3)它应包含一个或多个以下特殊字符:〜,!,@,#,$,%,^,&,* 4)它应该包含一个或多个数字。输出定义为:如果第一个条件失败,则如果只有两个条件(包括第一个条件),则输出=“ Too short”
满足,如果仅满足三个条件(包括第一个条件),则输出=“弱”,如果满足所有四个条件,则输出=“中等”,然后输出=“强” 下面是我编写的代码:
class PasswordStrengthValidation
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
Scanner scan = new Scanner(System.in);
System.out.println("Enter the password");
String inputPassword = scan.next();
int uppercase = 0;
int lowercase = 0;
int specialcharacters = 0;
int digits = 0;
char[] Password = inputPassword.toCharArray();
for (int index = 0; index < inputPassword.length(); index++)
{
if (Character.isUpperCase(Password[index]))
{
uppercase = 1;
}
if (Character.isLowerCase(Password[index]))
{
lowercase = 1;
}
if (Character.isDigit(Password[index]))
{
digits = 1;
}
}
if (inputPassword.contains("~") || inputPassword.contains("!") || inputPassword.contains("@")
|| inputPassword.contains("#") || inputPassword.contains("$") || inputPassword.contains("%")
|| inputPassword.contains("^") || inputPassword.contains("&") || inputPassword.contains("*")) ;
{
specialcharacters = 1;
}
if (inputPassword.length() < 8)
System.out.println("Too Short");
if (inputPassword.length() >= 8 && (((uppercase == 1) && (lowercase == 1)) || (digits == 1) || (specialcharacters == 1)))
System.out.println("Weak");
if ((inputPassword.length() >= 8 && (((uppercase == 1) && (lowercase == 1)) || (digits == 1) && (specialcharacters == 1)))
&&
(inputPassword.length() >= 8 && (((uppercase == 1) && (lowercase == 1)) && (digits == 1) || (specialcharacters == 1))))
System.out.println("Medium");
if (inputPassword.length() >= 8 && (uppercase == 1) && (lowercase == 1) && (digits == 1) && (specialcharacters == 1))
System.out.println("Strong");
}
}
但是,当我尝试通过提供属于“弱”类别的“密码”输入来实现以下代码时,我得到的输出为“弱”,后跟“中等”。有人可以帮我解决我要去哪里吗。提前致谢!
答案 0 :(得分:2)
我建议使用正则表达式
Carrier
您可以调整条件以删除或更改表达式中的条件
(?=。* [a-z])字符串必须至少包含1个小写字母 字符
(?=。* [A-Z])字符串必须包含至少1个大写字母
字母字符
(?=。* [0-9])字符串必须至少包含1 数字字符
(?=。[!@#\ $%\ ^&])字符串必须至少包含一个特殊字符 字符,但我们转义了保留的RegEx字符以避免 冲突