| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- package cn.com.goldenwater.dcproj.utils;
- import java.util.LinkedHashSet;
- import java.util.Set;
- /**
- * 密码检测
- * */
- public class PasswordChecker {
- private static boolean upperCase = false; // 包含大写字母
- private static boolean lowerCase = false; // 包含小写字母
- private static boolean letter = true; // 包含字母
- private static boolean digit = true; // 包含数字
- private static boolean special = true; // 包含特殊字符
- private static Set<Character> specialCharSet = null; // 特殊字符集合
- private static int minLength = 8; // 最小长度
- private static int maxLength = 20; // 最大长度
- /**
- * 密码符合规则,返回true
- */
- public static boolean check(String password){
- if(password==null || password.length()<minLength || password.length()>maxLength){
- // 长度不符合
- return false;
- }
- specialCharSet=defaultSpecialCharSet();
- boolean containUpperCase = false;
- boolean containLowerCase = false;
- boolean containLetter = false;
- boolean containDigit = false;
- boolean containSpecial = false;
- for(char ch : password.toCharArray()){
- if(Character.isUpperCase(ch)){
- containUpperCase = true;
- containLetter = true;
- }else if(Character.isLowerCase(ch)){
- containLowerCase = true;
- containLetter = true;
- }else if(Character.isDigit(ch)){
- containDigit = true;
- }else if(specialCharSet.contains(ch)){
- containSpecial = true;
- }else{
- // 非法字符
- return false;
- }
- }
- if(upperCase && !containUpperCase){
- return false;
- }
- if(lowerCase && !containLowerCase){
- return false;
- }
- if(letter && !containLetter){
- return false;
- }
- if(digit && !containDigit){
- return false;
- }
- if(special && !containSpecial){
- return false;
- }
- return true;
- }
- public static Set<Character> defaultSpecialCharSet(){
- Set<Character> specialChars = new LinkedHashSet<>();
- // 键盘上能找到的符号
- specialChars.add(Character.valueOf('~'));
- specialChars.add(Character.valueOf('`'));
- specialChars.add(Character.valueOf('!'));
- specialChars.add(Character.valueOf('@'));
- specialChars.add(Character.valueOf('#'));
- specialChars.add(Character.valueOf('$'));
- specialChars.add(Character.valueOf('%'));
- specialChars.add(Character.valueOf('^'));
- specialChars.add(Character.valueOf('&'));
- specialChars.add(Character.valueOf('*'));
- specialChars.add(Character.valueOf('('));
- specialChars.add(Character.valueOf(')'));
- specialChars.add(Character.valueOf('-'));
- specialChars.add(Character.valueOf('_'));
- specialChars.add(Character.valueOf('+'));
- specialChars.add(Character.valueOf('='));
- specialChars.add(Character.valueOf('{'));
- specialChars.add(Character.valueOf('['));
- specialChars.add(Character.valueOf('}'));
- specialChars.add(Character.valueOf(']'));
- specialChars.add(Character.valueOf('|'));
- specialChars.add(Character.valueOf('\\'));
- specialChars.add(Character.valueOf(':'));
- specialChars.add(Character.valueOf(';'));
- specialChars.add(Character.valueOf('"'));
- specialChars.add(Character.valueOf('\''));
- specialChars.add(Character.valueOf('<'));
- specialChars.add(Character.valueOf(','));
- specialChars.add(Character.valueOf('>'));
- specialChars.add(Character.valueOf('.'));
- specialChars.add(Character.valueOf('?'));
- specialChars.add(Character.valueOf('/'));
- return specialChars;
- }
- }
|