直接看代码
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class RandomPwdUtils {
public final static int FLAG_NUMBER = 0x00000001 ;
public final static int FLAG_LOWER_CASE = 0x00000002 ;
public final static int FLAG_UPPER_CASE = 0x00000004 ;
public final static int FLAG_SPECIAL_SYMBOLS = 0x00000008 ;
private List<String> pwdCharacterList;
public int flags = -1 ;
public int length = 8 ;
/**
* 注意设置flags,默认生成密码8位
*/
public RandomPwdUtils () {
pwdCharacterList = new ArrayList<>();
}
/**
* 生成密码
*
* @return
*/
public String generatePassword () {
addCharacter();
Random random = new Random();
StringBuilder sb = new StringBuilder(length);
for (int i = 0 ; i < length; i++) {
int index = random.nextInt(pwdCharacterList.size());
sb.append(pwdCharacterList.get(index));
}
return sb.toString();
}
private void addCharacter () {
if (flags == -1 )
throw new IllegalArgumentException("请设置flags的值" );
pwdCharacterList.clear();
if ((flags & FLAG_NUMBER) == FLAG_NUMBER) {
addNumber();
}
if ((flags & FLAG_LOWER_CASE) == FLAG_LOWER_CASE) {
addLowerCase();
}
if ((flags & FLAG_UPPER_CASE) == FLAG_UPPER_CASE) {
addUpperCase();
}
if ((flags & FLAG_SPECIAL_SYMBOLS) == FLAG_SPECIAL_SYMBOLS) {
addSpecialSymbols();
}
}
/**
* 添加数字
*/
private void addNumber () {
for (int i = 0 ; i < 10 ; i++) {
pwdCharacterList.add(i + "" .toUpperCase());
}
}
/**
* 添加小写字母 a-z
*/
private void addLowerCase () {
for (int i = 97 ; i <= 122 ; i++) {
pwdCharacterList.add(String.valueOf((char ) i));
}
}
/**
* 添加大写字母 A-Z
*/
private void addUpperCase () {
for (int i = 65 ; i < 91 ; i++) {
pwdCharacterList.add(String.valueOf((char ) i));
}
}
/**
* 添加特殊符号
*/
private void addSpecialSymbols () {
pwdCharacterList.add("@" );
pwdCharacterList.add("#" );
pwdCharacterList.add("$" );
pwdCharacterList.add("%" );
pwdCharacterList.add("!" );
}
}
使用
RandomPwdUtils utils = new RandomPwdUtils()
utils.flags = RandomPwdUtils.FLAG _NUMBER | RandomPwdUtils.FLAG _LOWER_CASE
utils.length = 10
utils.generatePassword ()