随机位数的密码生成器
import org.apache.commons.lang3.StringUtils;
import java.util.*;
/**
* @ClassName: RandomPwGenerator
* @Description: 随机密码生成器(生成方式:密码字典)
* @Author:
* @Date: 2021/8/3 15:04
**/
public class RandomPwGenerator {
/**
* 大写字母密码字典
*/
private static List<Character> bigStrList = Arrays.asList('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z');
/**
* 小写字母的密码字典
*/
private static List<Character> lowerStrList = Arrays.asList('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z');
/**
* 数字的密码字典
*/
private static List<Character> numStrList = Arrays.asList('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
/**
* 特殊字符字典
*/
private static List<Character> specialStrList = Arrays.asList('!', '\"', '#', '$', '%', '(', ')', '\'', '*', '+',',','-','.','/');
/**
* 生成随机密码
*
* @param length 密码位数
* @param isContainBigChar 是否包含大写字母
* @param isContainlowerChar 是否包含小写字母
* @param isNumChar 是否包含数字
* @param isSpecialChar 是否包含特殊字符
* @return 随机密码
*/
public static String generatorRandomPw(int length, boolean isContainBigChar, boolean isContainlowerChar,
boolean isNumChar, boolean isSpecialChar) {
List<Character> randomList = new ArrayList<>(length);
Random r = new Random();
List<Character> characterList = new ArrayList<>();
// 首先根据参数,每个类型给一个字符,剩余的随机选择
if (isContainBigChar) {
randomList.add(bigStrList.get(r.nextInt(bigStrList.size())));
characterList.addAll(bigStrList);
}
if (isContainlowerChar) {
randomList.add(lowerStrList.get(r.nextInt(lowerStrList.size())));
characterList.addAll(lowerStrList);
}
if (isNumChar) {
randomList.add(numStrList.get(r.nextInt(numStrList.size())));
characterList.addAll(numStrList);
}
if (isSpecialChar) {
randomList.add(specialStrList.get(r.nextInt(specialStrList.size())));
characterList.addAll(specialStrList);
}
int reaminLength = length - randomList.size();
for (int i = 0; i < reaminLength; i++) {
randomList.add(characterList.get(r.nextInt(characterList.size())));
}
Collections.shuffle(randomList);
return StringUtils.join(randomList,StringUtils.EMPTY);
}
}