Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.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_Passwords - Fatal编程技术网

Java密码策略验证

Java密码策略验证,java,passwords,Java,Passwords,我的问题是创建包含以下内容的策略密码: 大写字母字符-完成 小写字母字符-完成 数字-完成 特殊字符-完成 不允许字母/数字序列,例如qwerty、12345、qazws、poiuy、09876、abcde等-故障 是否有人可以澄清这是通过正则表达式实现的,还是通过Java库(例如vtpassword)实现更好。如果可能,有人能给我提供一个示例代码吗?我不久前解决了我的问题,我想分享我的代码:序列不能包含机械密码的前5个字符 public boolean specialChar(String

我的问题是创建包含以下内容的策略密码:

  • 大写字母字符-完成
  • 小写字母字符-完成
  • 数字-完成
  • 特殊字符-完成
  • 不允许字母/数字序列,例如qwerty、12345、qazws、poiuy、09876、abcde等-故障

是否有人可以澄清这是通过正则表达式实现的,还是通过Java库(例如vtpassword)实现更好。如果可能,有人能给我提供一个示例代码吗?

我不久前解决了我的问题,我想分享我的代码:序列不能包含机械密码的前5个字符

public boolean specialChar(String password){

    String sequences = "!@#$%^&*()(*&^%$#@!";
    boolean specbool = false;

    Pattern pp = Pattern.compile("\\p{Punct}{5}+");
    Matcher mm = pp.matcher(password);
    if (mm.find()){
        String q = mm.group();
        specbool = sequences.contains(q);
    }

    return specbool;
}

“字母/数字序列”这里有一些非常任意的序列,比如,除了在某些键盘布局上它们是相邻的之外,没有其他模式。你必须列举所有的非法序列并进行检查。这是工作场所密码验证还是学校密码验证?我可以提供关于后一种方法的一些见解,但前者的某些方面应该通过更严格的方法来完成。@AndyTurner是的,只是关于某些键附近的序列。建立一个字典,其中包含最少数量的不可接受的序列字符。例如,如果一行中不能有3个或更多的qwerty字符,则词典只需要包含所有可能的3个字符qwerty序列。然后检查字典中是否有密码的任何3个相邻字符。然后反转密码并再次检查。