如何创建密码?


问题内容

我想给一些用户提供一百万个密码,例如:

  1. 必须至少包含6个字符
  2. 它必须包含数字和字母

我应该Random在这里使用吗?怎么样?


问题答案:

Apache Commons
Lang的RandomStringUtils提供了一些生成随机字符串的方法,该字符串可用作密码。


以下是8个字符的密码创建示例:

// Passwords with only alphabetic characters.
for (int i = 0; i < 8; i++) {
    System.out.println(RandomStringUtils.randomAlphabetic(8));
}
System.out.println("--------");
// Passwords with alphabetic and numeric characters.
for (int i = 0; i < 8; i++) {
    System.out.println(RandomStringUtils.randomAlphanumeric(8));
}

这将产生以下结果:

zXHzaLdG
oDtlFDdf
bqPbXVfq
tzQUWuxU
qBHBRKQP
uBLwSvnt
gzBcTnIm
yTUgXlCc
--------
khDzEFD2
cHz1p6yJ
3loXcBau
F6NJAQr7
PyfN079I
8tJye7bu
phfwpY6y
62q27YRt

当然,您也可以使用一些方法来限制密码生成所允许的字符集:

for (int i = 0; i < 8; i++) {
    System.out.println(RandomStringUtils.random(8, "abcDEF123"));
}

将仅创建以下字符的密码:a,b,c,D,E,F,1、2或3:

D13DD1Eb
cac1Dac2
FE1bD2DE
2ab3Fb3D
213cFEFD
3c2FEDDF
FDbFcc1E
b2cD1c11