Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 密码检查器指南_Java - Fatal编程技术网

Java 密码检查器指南

Java 密码检查器指南,java,Java,我正在进行密码检查,我需要一些帮助。如果可能的话,我需要使检查器尽可能“真实”。这意味着它需要实际注册密码并进行对话。我设法记下了一些准则:密码必须是8-12个字符、1个数字、1个特殊字符和一个大写字母。我很难将密码存储到数据库中,并且不允许两个相同的字符连续排列(例如aa) import java.util.Scanner; 公共类密码{ 公共静态void main(字符串[]args){ //TODO自动生成的方法存根 int min=8; int max=12; 整数位数=0; int-s

我正在进行密码检查,我需要一些帮助。如果可能的话,我需要使检查器尽可能“真实”。这意味着它需要实际注册密码并进行对话。我设法记下了一些准则:密码必须是8-12个字符、1个数字、1个特殊字符和一个大写字母。我很难将密码存储到数据库中,并且不允许两个相同的字符连续排列(例如aa)

import java.util.Scanner;
公共类密码{
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
int min=8;
int max=12;
整数位数=0;
int-special=0;
int-upCount=0;
int loCount=0;
整数计数=0;
字符串密码;
字符串决策;
扫描仪扫描=新扫描仪(System.in);
System.out.println(“输入密码:”);
密码=scan.nextLine();
//查看密码是否正确
如果(计数=0){
如果(password.length()>=min&&password.length()=1&&upCount>=1&&digit>=1){
System.out.println(“您的密码可以接受”);
}
}
if(password.length()0){
System.out.println(“密码必须至少为“+min+”字符:”);
System.out.println(“您至少需要一个数字:”);
println(“您至少需要一个特殊的字符:”);
}
}
if(password.length()>max | | password.length()>=max&&upCount>1&&loCount>1&&digit>1){
System.out.println(“密码太长,限制为“+max+”字符:”);
println(“您至少需要一个特殊的字符:”);
}
if(password.length()>=min&&password.length()0&&upCount>0&&digit>0&&special==0){
System.out.println(“您至少需要一个特殊的chracter”);
}
if(password.length()>=min&&password.length()0&&upCount>0&&digit==0&&special==0){
System.out.println(“您至少需要一个数字:”);
println(“您至少需要一个特殊的字符:”);
}
}
}
}

在我看来,与其计算所有特殊字符、大写字母和小写字母的数量,您可以只计算每个字符的
布尔值,如果最后所有字符都为真,您可以将密码插入数据库。要阻止旁边有相等字符的密码,可以在For循环中尝试类似的方法

if(i < (password.length() -1) && c == password.charAt( i+1 ) ) {
   //throw error message or set boolean of valid to false.
}
if(i<(password.length()-1)和&c==password.charAt(i+1)){
//抛出错误消息或将布尔值valid设置为false。
}
这表示如果i小于length-1(因此我们可以在没有数组越界异常的情况下检查下一个索引),那么检查下一个字符是否等于当前字符


接下来,正如其他一些人所说,您应该将密码存储在数据库中,作为盐哈希。这是为了确保如果您的数据库被破坏,您的密码会被散列。

应该一次问一个问题。数据库保存代码在哪里?您从数据库中得到了什么错误?当你试图用连续的字符来阻止密码时,会发生什么?使用正则表达式来解决这些问题,也请考虑如何在数据库中存储密码。8-12个字符的限制是相当愚蠢的,更不用说现在12个字符也不太安全了。2.没有两个相同的字符,这一行只会让我作为一个用户生气(例如,我有一个完整的句子作为密码,它包含诸如
moon
)之类的单词)。您可能需要检查诸如
12345
abcde
qwerty
等内容。
if(i < (password.length() -1) && c == password.charAt( i+1 ) ) {
   //throw error message or set boolean of valid to false.
}