随机产生指定位数的字符,包括数字,大写字母,小写字母

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));
 }

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值