⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 profile.java

📁 本系统有十分强大的功能
💻 JAVA
字号:
package org.opencustomer.framework.util.password;

import java.util.ArrayList;
import java.util.List;

public final class Profile
{
    public final static Profile DEFAULT_PROFILE;
    
    public final static Profile FIX_LENGTH8_PROFILE;

    static {
        DEFAULT_PROFILE = new Profile(8, 16);
        DEFAULT_PROFILE.addGroup(Group.GROUP_LOWER_CHAR, 1, 5);
        DEFAULT_PROFILE.addGroup(Group.GROUP_UPPER_CHAR, 1, 5);
        DEFAULT_PROFILE.addGroup(Group.GROUP_DIGIT, 1, 3);
        DEFAULT_PROFILE.addGroup(Group.GROUP_SIGN, 1, 3);

        FIX_LENGTH8_PROFILE = new Profile(8, 8);
        FIX_LENGTH8_PROFILE.addGroup(Group.GROUP_LOWER_CHAR, 1, 3);
        FIX_LENGTH8_PROFILE.addGroup(Group.GROUP_UPPER_CHAR, 1, 3);
        FIX_LENGTH8_PROFILE.addGroup(Group.GROUP_DIGIT, 1, 2);
        FIX_LENGTH8_PROFILE.addGroup(Group.GROUP_SIGN, 1, 2);
    }
    
    private int passwordMinLength;

    private int passwordMaxLength;

    private List<Bean> beans = new ArrayList<Bean>();
    
    public Profile(int passwordMinLength, int passwordMaxLength) 
        throws IllegalArgumentException {
        
        if(passwordMinLength < 1)
            throw new IllegalArgumentException("the minimum length have to be greater then 0");
        if(passwordMinLength > passwordMaxLength)
            throw new IllegalArgumentException("the minimum length may not be greater than maximum length");
        
        this.passwordMinLength = passwordMinLength;
        this.passwordMaxLength = passwordMaxLength;
    }
    
    public int getPasswordMinLength() {
        return passwordMinLength;
    }

    public int getPasswordMaxLength() {
        return passwordMaxLength;
    }
    public void addGroup(Group group, int min, int max) 
        throws IllegalArgumentException {
        
        if(min < 0)
            throw new IllegalArgumentException("minimum may not be lower than 0");
        if(max < 1)
            throw new IllegalArgumentException("maximum may not be lower than 1");
        if(min > max)
            throw new IllegalArgumentException("minimum not be greater than maximum");

        
        beans.add(new Bean(group, min, max));
    }
    
    public int getGroupSize() {
        return beans.size();
    }
    
    public Group getGroup(int index) {
        return beans.get(index).getGroup();
    }
    
    public int getGroupMin(int index) {
        return beans.get(index).getMin();
    }  
    
    public int getGroupMax(int index) {
        return beans.get(index).getMax();
    }  
    
    public boolean isPasswordValid(String password) {
        int invalidGroups = beans.size();
        
        char[] passwordChars = password.toCharArray();

        if(password != null) {
            for(Bean bean: beans) {
                char[] groupChars = bean.getGroup().getCharacters();
                
                int count = count(passwordChars, groupChars);
                if(count >= bean.getMin() && count <=bean.getMax()) {
                    invalidGroups--;
                }
            }
            
        }
        
        return (invalidGroups == 0);
    }
    
    private int count(char[] passwordChars, char[] groupChars) {
        int count = 0;
        
        for(char pwdChar : passwordChars) {
            for(char groupChar : groupChars) {
                if(pwdChar == groupChar) {
                    count++;
                    break;
                }
            }
        }
        
        return count;    
    }
    
    private final class Bean {
        private Group group;
        
        private int min;
        
        private int max;
        
        public Bean(Group group, int min, int max) {
            this.group = group;
            this.min   = min;
            this.max   = max;
        }

        public final Group getGroup() {
            return group;
        }
        
        public final void setGroup(Group group) {
            this.group = group;
        }
        
        public final int getMax() {
            return max;
        }
        
        public final void setMax(int max) {
            this.max = max;
        }
        
        public final int getMin() {
            return min;
        }

        public final void setMin(int min) {
            this.min = min;
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -