1.连续性弱密码校验

描述:密码连续性校验是指123456,654321,abcdefg,gfedcba等数字和字母顺序是连续的字符称之为连续性弱密码。

校验方式:PassWordUtil.java通用类中的check_numl方法

方法说明:

/**
 * 密码连续性验证 连续字符串返回true
 * @param password 传入的校验字符串
 * @return
 */

2.重复性弱密码校验

描述:密码重复性校验是指11111,2222,aaaa,bbbbb等数字和字母都是相同字符称之为重复性弱密码。

校验方式:PassWordUtil.java通用类中的check_numz方法

方法说明:

/**
 * 密码重复性验证 重复字符串返回true
 * @param password 传入的校验字符串
 * @return
 */

3.密码必须字母和数字组合校验

描述:密码格式必须是字母+数据的组合,不能全是数字或者字母。

校验方式:PassWordUtil.java通用类中的isLetterDigit方法

方法说明:

/**
 * 判断字符串是否同时包含数字和字母
 * @param str  传入的校验字符串
 * @return true 正确 false 错误
 */

下面是PassWordUtil.java工具类代码

package com.netmarch.web.common.utils;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;/*** 密码字符验证类*/
public class PassWordUtil {/*** 密码连续性验证 连续字符串返回true* @param password 传入的校验字符串* @return*/public static boolean check_numl(String password){boolean is = true;String v = isCf(password);if("4".equals(v)){return false;}else {return simpleLetterAndNumCheck(password,password.length());}}/*** 判断字符串是否同时包含数字和字母* @param str  传入的校验字符串* @return true 正确 false 错误*/public static boolean isLetterDigit(String str) {String regex = "^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]+$";return str.matches(regex);}/*** 密码重复性验证 重复字符串返回true* @param password 传入的校验字符串* @return*/public static boolean check_numz(String password){char [] value = password.toCharArray();List<String> list = new ArrayList<>();for (char c : value) {list.add( String.valueOf(c));}
//        Map<String, Long> map = new HashMap<>();Map<String, Long> map = list.stream().collect(Collectors.groupingBy(p -> p, Collectors.counting()));map.forEach((k, v) -> System.out.println(k + ":" + v));return map.size() == 1;}/*** 校验字符串连续多少位是纯数字或者纯字母(字母区分大小写)* @param value 密码* @param length 校验长度,默认6为* @return*/public static boolean simpleLetterAndNumCheck(String value, int length){//是否不合法boolean isValidate = false;//int i = 0;//计数器int counter = 1;//for(; i < value.length() -1;) {//当前ascii值int currentAscii = Integer.valueOf(value.charAt(i));//下一个ascii值int nextAscii = Integer.valueOf(value.charAt(i + 1));//满足区间进行判断if( (PassWordUtil.rangeInDefined(currentAscii, 48, 57) || PassWordUtil.rangeInDefined(currentAscii, 65, 90) || PassWordUtil.rangeInDefined(currentAscii, 97, 122))&& (PassWordUtil.rangeInDefined(nextAscii, 48, 57) || PassWordUtil.rangeInDefined(nextAscii, 65, 90) || PassWordUtil.rangeInDefined(nextAscii, 97, 122)) ) {//计算两数之间差一位则为连续if(Math.abs((nextAscii - currentAscii)) == 1){//计数器++counter++;}else{//否则计数器重新计数counter = 1;}}//满足连续数字或者字母if(counter >= length) return !isValidate;//i++;}//return isValidate;}/*** 判断一个数字是否在某个区间* @param current 当前比对值* @param min   最小范围值* @param max   最大范围值* @return*/public static boolean rangeInDefined(int current, int min, int max) {//return Math.max(min, current) == Math.min(current, max);}/*** 判断字符重复性* @param str* @return 1 大写重复字母 2小写重复字母 3数字重复 4非重复数据*/public static String isCf(String str) {Pattern pattern1 = Pattern.compile("[a-z]*");Pattern pattern2 = Pattern.compile("[A-Z]*");Pattern pattern3 = Pattern.compile("[0-9]*");Matcher matcher1 = pattern1.matcher(str);Matcher matcher2 = pattern2.matcher(str);Matcher matcher3 = pattern3.matcher(str);if (matcher1.matches()) {return "1";} else if (matcher2.matches()) {return "2";} else if (matcher3.matches()) {return "3";} else {return "4";}}
}

java简单密码校验工具类及弱密码说明相关推荐

  1. java身份证号码校验工具类

    import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; impor ...

  2. Java后端手机号校验工具类

    package com.cn.test.tset;import org.apache.commons.lang.StringUtils;import java.util.regex.Pattern;/ ...

  3. java 身份证正则校验工具类

    import java.text.SimpleDateFormat; import java.util.Date;/** * 验证身份证号码 身份证号码, 可以解析身份证号码的各个字段, * 以及验证 ...

  4. JAVA --银行卡正则校验工具类

    package com.allinpay.utils;import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpRequest; im ...

  5. java 身份证号码校验工具类

    import org.slf4j.Logger; import org.slf4j.LoggerFactory;/*** 校验身份证*/ public class IdCardUtil {privat ...

  6. Java后台校验修改密码强度工具类

    /*** @Author: Mr.ZJW* @Date: 2022-05-31 16:52* @Description: 密码校验工具类*/ public class PwdCheckUtil {pu ...

  7. Java身份证校验工具类

    Java身份证校验工具类 工作中经常会涉及到身份证的校验,而且需求不同,有的需要校验最后一位校验位,有的不需要,这里参考了几篇文章及自己工作中用到的情况写了一个工具类.记录一下,菜鸟一个,大佬勿喷. ...

  8. Java正则表达式校验工具类_【Java工具类】----正则表达式校验工具类

    /** * @Title: RegexValidateUtil.java * @Package org.csun.nc.util * @Description: TODO * @author chis ...

  9. 组织机构代码和统一社会信用代码校验规则以及java校验工具类

    组织机构代码 编码规则编辑 1.全国组织机构代码由八位数字(或大写拉丁字母)本体代码和一位数字(或大写拉丁字母)校验码组成. 本体代码采用系列(即分区段)顺序编码方法. 校验码按照以下公式计算: C9 ...

最新文章

  1. 魂力真的存在那么该如何提高魂力呢
  2. 记录一下提取文件夹中所有文件名字
  3. python绘制3维图-Python 绘制 3 维以上的高维图
  4. 线性代数思维导图_线性代数入门级思维导图
  5. python使曲线变得平滑_如何在Python中平滑数据?
  6. java 写入环境变量_Java环境变量配置 - import_key的个人空间 - OSCHINA - 中文开源技术交流社区...
  7. 盘点那些让程序员目瞪口呆的奇葩Bug,最后一个什么梗
  8. 部署thinkphp5框架的php,三、部署ThinkPHP5框架
  9. Java基础---数组练习(最大值、最小值的索引)
  10. web.config中的InProc模式 与 StateServer模式[转]
  11. Docker的常用操作
  12. 华为虚拟化Fusionphere中VRM重启
  13. 内联元素与内联块状元素
  14. 如何制作一张3D复古拼贴海报 Part I
  15. VRPN-OSVR介绍
  16. C#之 正则表达式和特殊字符
  17. springboot+thymeleaf实现邮件群发
  18. 如何将多个excel表格合并成一个_怎么将多个pdf文件合并成一个?
  19. 什么是jsf_什么是JSF? JavaServer Faces简介
  20. 【夏目鬼鬼分享】springboot搭建阿里Druid数据源监控

热门文章

  1. Python实现消消乐小游戏
  2. Dux主题V6.4 WordPress自媒体资讯模板
  3. android后台获取view,如何获取AdapterView中当前显示的项目?
  4. 无盘服务器要开ahci,开启硬盘的ahci模式提升磁盘性能教程
  5. 仰望星空 ecnu
  6. Win7系统下安装Python环境以及IDE开发环境(PyCharm)
  7. Java VM错误解决方法
  8. jQuery中的Ajax (六个Ajax的操作方法) 细解!!!
  9. 基于AM335X开发板 ARM Cortex-A8——Acontis EtherCAT主站开发案例
  10. SSL P1597 石子合并问题 题目