求各位大神!java生成随机数的工具类,随机数要求:包含大写字母、小写字母、数字、符号至少2种,长度8-32位!
public static String getRandomString(int length) { //length表示生成字符串的长度
String base = "abcdefghijklmnopqrstuvwxyz0123456789";
Random random = new Random();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < length; i++) {
int number = random.nextInt(base.length());
sb.append(base.charAt(number));
}
return sb.toString();
}
写的麻烦,但是感觉楼上那个不对。正常来说都是正则检测匹配密码复杂度的,你这种自己生成密码是干啥用,也不像是数据加密啊。建议可以考虑ascll码表对应,里面有大小写,数字这种的ascll表对应值,用do while循环,循环里面随机数取ascll表对应值,拼接成结果字符串StringBuffer,通过固定的ascll码范围来判定满足了那个条件。满足一个条件temp为1,满足两个条件temp为2,.然后退出循环,tostring一下StringBuffer
1、在8-32里random取长度
2、在2-4里random取类型个数
3、随机取类型
3、按ASCII码把大写字母、小写字母、数字、符号成不同char数组
4、填入随机数