欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 锐评 > Java封装弱密码校验工具类

Java封装弱密码校验工具类

2025/5/16 13:15:53 来源:https://blog.csdn.net/weixin_52164430/article/details/145865346  浏览:    关键词:Java封装弱密码校验工具类

在这里插入图片描述

弱密码校验工具类

通过检查密码是否符合某些安全策略来判断其强度
● 密码长度
● 字符类型
● 常见密码组合

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;public class WeakPasswordCheckUtil {// 常见弱密码列表(可根据需求扩展)private static final Set<String> COMMON_WEAK_PASSWORDS = new HashSet<>(Arrays.asList("password", "123456", "12345678", "123456789", "qwerty","abc123", "111111", "admin", "letmein", "welcome"));/*** 检查密码是否为弱密码** @param password 待检查的密码* @return true-弱密码,false-安全密码*/public static boolean isWeakPassword(String password) {// 检查空密码if (password == null || password.isEmpty()) {return true;}// 转换为小写统一检查(弱密码不区分大小写)String lowerCasePwd = password.toLowerCase();// 常见弱密码检查if (COMMON_WEAK_PASSWORDS.contains(lowerCasePwd)) {return true;}// 密码长度检查(至少8位)if (password.length() < 8) {return true;}// 字符复杂度检查(至少包含三种字符类型)if (!checkComplexity(password)) {return true;}// 连续或重复字符检查if (hasRepeatingChars(password) || hasSequentialChars(password)) {return true;}return false;}// 检查密码复杂度(大小写字母、数字、特殊符号至少包含三种)private static boolean checkComplexity(String password) {boolean hasLower = false, hasUpper = false;boolean hasDigit = false, hasSpecial = false;for (char c : password.toCharArray()) {if (Character.isLowerCase(c)) {hasLower = true;} else if (Character.isUpperCase(c)) {hasUpper = true;} else if (Character.isDigit(c)) {hasDigit = true;} else {hasSpecial = true;}}int typeCount = 0;if (hasLower) typeCount++;if (hasUpper) typeCount++;if (hasDigit) typeCount++;if (hasSpecial) typeCount++;return typeCount >= 3;}// 检查连续三个重复字符(如aaa)private static boolean hasRepeatingChars(String password) {for (int i = 0; i < password.length() - 2; i++) {if (password.charAt(i) == password.charAt(i + 1) &&password.charAt(i) == password.charAt(i + 2)) {return true;}}return false;}// 检查连续三个递增/递减字符(如abc或321)private static boolean hasSequentialChars(String password) {for (int i = 0; i < password.length() - 2; i++) {int c1 = password.charAt(i);int c2 = password.charAt(i + 1);int c3 = password.charAt(i + 2);// 递增检查(如123)if (c2 == c1 + 1 && c3 == c2 + 1) {return true;}// 递减检查(如321)if (c2 == c1 - 1 && c3 == c2 - 1) {return true;}}return false;}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词