RandomStringUtils.randomAlphanumeric保证数字和字母

时间:2014-01-17 15:30:22

标签: java apache random apache-commons

此方法是否保证生成一个随机密码,该密码至少包含一个数字,一个大写字母和一个小写字母?

  

org.apache.commons.lang.RandomStringUtils.randomAlphanumeric(10)

如果没有,这种方法生成10位数的密码有多安全和好,该密码必须包含至少一个数字,一个大写字母和一个小写字母?

  

org.apache.commons.lang.RandomStringUtils.randomAlphanumeric(7)+“a1R”;

感谢。

1 个答案:

答案 0 :(得分:3)

javadoc没有说什么,所以没有理由它会返回一个至少有一个数字,小写和大写的字符串。

您可以继续生成密码,直到获得所需内容,例如:

String pass;
do {
    pass = randomAlphanumeric(10);
} while (!pass.matches(".*(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).*"));

正则表达式改编自this answer