我目前正在使用以下代码生成随机密码:
static public String randomPasswordGenerator(int n, String valid)
{
char[] pwd = new char[n];
Random rnd = new Random();
for (int i = 0; i < pwd.length; i++)
{
pwd[i] = valid.charAt(rnd.nextInt(valid.length()));
}
return new String(pwd);
}
Run Code Online (Sandbox Code Playgroud)
当前有效参数设置为:
String valid = "abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ123456789#$&%£";
Run Code Online (Sandbox Code Playgroud)
有时,当我生成密码时,会发现正在生成奇怪的字符,例如,我可以得到:n9iB8Qj6inR(其中,最后一个字符不包含在有效集中)
知道为什么会这样吗?
非常感谢
编辑我虽然这与编码问题有关,但是在调试上述函数的返回字符串时,我可以直接看到那个奇怪的字符。另外,使用字符集作为“#$&%£”有时会返回所有字符以及那个奇怪的A(例如:&%Â&$&#£%#Â&)