package com.grcaeup;
import java.util.Random;
/**
* 随机生成8位密码 工具类
*
*/
public class RandomPasswordUtils {
private static final Integer PWD_LENGTH = 16;
public static String getPassword() {
//参照ascII码表
//密码数字字符的构成对象
StringBuilder sourceNumber = new StringBuilder();
//密码大写字母的构成对象
StringBuilder sourceCapital = new StringBuilder();
//密码小写字母的构成对象
StringBuilder sourcelowercase = new StringBuilder();
//密码特殊字符的构成对象
StringBuilder sourceSpeChar = new StringBuilder();
//数字 0,1 不要
for (int i = 0x32; i < 0x3A; i++) {
sourceNumber.append((char) i);
}
//大写字母 (I,O, 不算)
for (int i = 0x41; i < 0x5b; i++) {
if (i != 79 && i != 73) {
sourceCapital.append((char) i);
}
}
//小写字母 (i,o,l 不算)
for (int i = 0x61; i < 0x7b; i++) {
if (i != 105 && i != 111 && i != 108) {
sourcelowercase.append((char) i);
}
}
// ~!@#$%^&*()_+`\-={}:";'<>?,. を 設定する
for (int i = 33; i <= 46; i++) {
sourceSpeChar.append((char) i);
}
for (int i = 58; i <= 64; i++) {
sourceSpeChar.append((char) i);
}
sourceSpeChar.append((char) 92);
sourceSpeChar.append((char) 94);
sourceSpeChar.append((char) 95);
sourceSpeChar.append((char) 96);
sourceSpeChar.append((char) 123);
sourceSpeChar.append((char) 125);
//密码码表的对象
StringBuilder source = new StringBuilder();
//将码表组成
source.append(sourceNumber);
source.append(sourceCapital);
source.append(sourcelowercase);
source.append(sourceSpeChar);
//随机数字
Random random = new Random();
//生成処理
StringBuilder password = new StringBuilder();
List<String> charList = new ArrayList<String>();
//每种字符都需要出现在密码中
charList.add(String.valueOf(sourceNumber.charAt(random.nextInt(sourceNumber.length()))));
charList.add(String.valueOf(sourceCapital.charAt(random.nextInt(sourceCapital.length()))));
charList.add(String.valueOf(sourcelowercase.charAt(random
.nextInt(sourcelowercase.length()))));
charList.add(String.valueOf(sourceSpeChar.charAt(random.nextInt(sourceSpeChar.length()))));
//如果设置的密码长度不够
while (charList.size() < PWD_LENGTH) {
//继续在当前的密码码表中取出字符串作为密码(被除数代表密码字符串的设定范围.也就是不能超出这个范围设置字符串)
charList.add(String.valueOf(source.charAt(random.nextInt(source.length()))));
//重新打乱排序
Collections.shuffle(charList);
//设置密码
for (String pa : charList) {
password.append(pa);
}
return password.toString();
}
}
生成16位密码
最新推荐文章于 2024-08-16 10:06:50 发布