java正则表达式判断强密码和随机生成强密码代码示例

 更新时间:2023年08月02日 10:01:22   作者:JurenXxt  
这篇文章主要给大家介绍了关于java正则表达式判断强密码和随机生成强密码的相关资料,最近需要一个密码强度正则表达式在用户注册时校验用户密码强度,需要的朋友可以参考下

前言

项目中遇到需要判断管理员登陆密码为强密码,同时可以自动随机生成强密码,写了一个函数。

一、定义几个常量

// 先把需要验证的规则放入一个字符数组中
  private static final char[] CHAR = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890@#$%^&+="
          .toCharArray();
//定义正则表达式规则至少要一个大写字母一个小写字母一个特殊字符,密码长度在8~16位之间
  private static final String PASSWORD_REGEX = "^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]){1,2}+(?=\\S+$).{8,16}$";
//判断密码中是否有中文
  private static final String NO_CHINESE_REGEX = "^[^\\u4e00-\\u9fa5]+$";
//根据上面两个规则创建两个模式用于校验
  private static final Pattern PASSWORD_PATTERN = Pattern.compile(PASSWORD_REGEX);
  private static final Pattern NO_CHINESE_PATTERN = Pattern.compile(NO_CHINESE_REGEX);

二、生成强密码

    /**
     * 随机生成强密码
     * @param length 密码长度
     * @return password
     */
    public static String generatePassword(int length) {
    //判断密码是否在8~16位之间超出或小于都会设置默认长度
        length = length < 8 ? 8 : length;
        length = length > 16 ? 16 : length;
        //调用获取随机强密码函数
        String result = getRandomPassword(length);
        // 如果规则满足条件直接返回强密码,否则再次调用
        Matcher m = PASSWORD_PATTERN.matcher(result);
        Matcher m1 = NO_CHINESE_PATTERN.matcher(result);
        if (m.matches() && m1.matches()) {
            return result;
        }
        return generatePassword(length);
    }
    //随机生成强密码
 	private static String getRandomPassword(int length) {
        StringBuilder sb = new StringBuilder();
        //线程安全随机数
        ThreadLocalRandom r = ThreadLocalRandom.current();
        for (int x = 0; x < length; ++x) {
        //添加CHAR里面的随机下标
            sb.append(CHAR[r.nextInt(CHAR.length)]);
        }
        return sb.toString();
    }

三.校验密码强度

    /**
     * 校验密码复杂度,至少包含8个字符,最多包含20个自负
     * 至少包含一个数字,一个大写字母,一个小写字母,一个特殊字符,同时不能包含空白区域
     * @param password 密码
     * @return true/false
     */
    public static boolean checkPasswordComplexity(String password) {
        if(StringUtils.isBlank(password)){
            return false;
        }
        if (password.length()> 8 && password.length() < 16) {
            //密码至少包含:大小写英文字母、数字、特殊符号,密码长度大于8位,小于16位
            String regex = "^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])(?=\\S+$).{8,16}$";
            // 判断密码是否匹配规则
            return Pattern.matches(regex, password);
        }
        else {
            return false;
        }
    }

总结

以上就是java如何使用正则表达式判断是否为强密码和如何随机生成强密码。

到此这篇关于java正则表达式判断强密码和随机生成强密码的文章就介绍到这了,更多相关java正则判断强密码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 记一次springboot配置redis项目启动时的一个奇怪的错误

    记一次springboot配置redis项目启动时的一个奇怪的错误

    这篇文章主要介绍了spring boot配置redis项目启动时的一个奇怪的错误,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • java中原码、反码与补码的问题分析

    java中原码、反码与补码的问题分析

    本篇文章介绍了,在java中原码、反码与补码的问题分析。需要的朋友参考下
    2013-04-04
  • SpringBoot快速集成jxls-poi(自定义模板,支持本地文件导出,在线文件导出)

    SpringBoot快速集成jxls-poi(自定义模板,支持本地文件导出,在线文件导出)

    这篇文章主要介绍了SpringBoot快速集成jxls-poi(自定义模板,支持本地文件导出,在线文件导出),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Java web过滤器验证登录防止未登录进入界面

    Java web过滤器验证登录防止未登录进入界面

    这篇文章主要介绍了Java web过滤器验证登录防止未登录进入界面,在一些系统中经常可以用到此功能,对java web 验证登录知识感兴趣的朋友一起看下吧
    2016-08-08
  • JAVA实现caesar凯撒加密算法

    JAVA实现caesar凯撒加密算法

    Carsar加密算法是最简单的加密算法,原理是把一个字母在字母表中移动相应的位置,比如输入a,将其移动3位,经过Caesar加密后输出的d,位置可以循环移动,输入x,则输出a
    2014-01-01
  • Spring boot整合ELK详细过程

    Spring boot整合ELK详细过程

    ELK是由Elasticsearch、Logstash和Kibana三个开源软件组成的技术堆栈,主要用于数据的存储、处理和可视化,本文给大家介绍Spring boot整合ELK详细过程,感兴趣的朋友一起看看吧
    2024-01-01
  • springboot3.x集成SpringDoc Swagger3过程

    springboot3.x集成SpringDoc Swagger3过程

    文章介绍了如何将Spring Boot 2.x升级到3.x并同步升级Swagger 2到Swagger 3,包括添加Maven依赖、编写SpringDoc配置类、添加Swagger 3注解、自定义过滤器防止未授权访问等步骤
    2026-01-01
  • JAVA实现Base64编码的三种方式

    JAVA实现Base64编码的三种方式

    本文主要介绍了JAVA实现Base64编码的三种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • SpringBoot读取resource文件代码实例

    SpringBoot读取resource文件代码实例

    这篇文章主要介绍了SpringBoot读取resource文件代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Spring boot 总结之跨域处理cors的方法

    Spring boot 总结之跨域处理cors的方法

    本篇文章主要介绍了Spring boot 总结之跨域处理cors的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02

最新评论