前言
为了做密评整改,而做的一个工具,主要借助的是正则表达式
工具
/**
* 密码复杂度检测工具
*/
public class PwdCheckUtil {
/**
* 校验
* @param pwd
*/
public static void checkStrongPwd(String pwd) {
if (StringUtils.isEmpty(pwd)) {
throw new CustomException("密码不能为空");
}
if (!PwdCheckUtil.checkPasswordLength(pwd, 8)
|| !PwdCheckUtil.checkContainCase(pwd)
|| !PwdCheckUtil.checkContainDigit(pwd)
|| !PwdCheckUtil.checkContainSpecialChar(pwd)
) {
throw new CustomException("密码必须包含数字、字母、特殊符号且大于8位");
}
System.out.println("验证通过");
}
/**
* 检测密码中字符长度
*
* @param password
* @param minNum
* @return
*/
public static boolean checkPasswordLength(String password, Integer minNum) {
return password.length() >= minNum;
}
/**
* 判断密码是否包含数字
*
* @param password
* @return
*/
public static boolean checkContainDigit(String password) {
Pattern pattern = Pattern.compile(".*\\d.*");
Matcher matcher = pattern.matcher(password);
return matcher.matches();
}
/**
* 判断密码是否包含大小写
*
* @param password
* @return
*/
public static boolean checkContainCase(String password) {
Pattern pattern = Pattern.compile("(?=.*[a-z])(?=.*[A-Z])");
Matcher matcher = pattern.matcher(password);
return matcher.find();
}
/**
* 包含特殊符号
*
* @param password
* @return
*/
public static boolean checkContainSpecialChar(String password) {
Pattern pattern = Pattern.compile("[!\"#$%&'()*+,-./:;<=>?@\\[\\\\\\]^_`{|}~]");
Matcher matcher = pattern.matcher(password);
return matcher.find();
}
}