public class test2 {
public static void main(String[] args) {
System.out.println(gen(8));
}
public static String gen(int length) {
char[] ss = new char[length];
int[] flag = {0,0,0}; //A-Z, a-z, 0-9
int i=0;
while(flag[0]==0 || flag[1]==0 || flag[2]==0 || i<length) {
i = i%length;
int f = (int) (Math.random()*3%3);
if(f==0)
ss[i] = (char) ('A'+Math.random()*26);
else if(f==1)
ss[i] = (char) ('a'+Math.random()*26);
else
ss[i] = (char) ('0'+Math.random()*10);
flag[f]=1;
i++;
}
return new String(ss);
}
}
======================================华丽的分界线=============================
按照上面的处理方式,增加敏感字符过滤的处理
private static void getSelStr(){
String filterStr = "IiLl1Oo0"; //敏感字符集
char[] pwd = new char[8];
int[] flag = {0,0,0}; //A-Z, a-z, 0-9
int len=0;
while(flag[0]==0 || flag[1]==0 || flag[2]==0 || len<8) {
len = len%8;
int f = (int) (Math.random()*3%3);
if(f==0){
pwd[len] = (char) ('A'+Math.random()*26); // A-Z
while(filterStr.contains(pwd[len]+"")){ //
System.out.println("-------------------A-Z中敏感字符出现------"+pwd[len]);
pwd[len] = (char) ('A'+Math.random()*26);
if(!filterStr.contains(pwd[len]+"")) {System.out.println("-------------------敏感字符替换为------"+pwd[len]); break;}
}
}
else if(f==1){
pwd[len] = (char) ('a'+Math.random()*26); // a-z
while(filterStr.contains(pwd[len]+"")){ //
System.out.println("-------------------a-z中敏感字符出现------"+pwd[len]);
pwd[len] = (char) ('a'+Math.random()*26);
if(!filterStr.contains(pwd[len]+"")) {System.out.println("-------------------敏感字符替换为------"+pwd[len]); break;}
}
}
else{
pwd[len] = (char) ('0'+Math.random()*10); // 0-9
while(filterStr.contains(pwd[len]+"")){ //
System.out.println("-------------------0-9中敏感字符出现------"+pwd[len]);
pwd[len] = (char) ('0'+Math.random()*10);
if(!filterStr.contains(pwd[len]+"")) {System.out.println("-------------------敏感字符替换为------"+pwd[len]); break;}
}
}
flag[f]=1;
len++;
}
System.out.println(new String(pwd));
}