我当前正在使用以下代码生成随机密码:
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);
}
有效参数当前设置为:
String valid = "abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ123456789#$&%£";
有时,当我生成密码时,我发现正在生成奇怪的字符,例如,我可以得到:n9iB8Qj6inR(其中最后一个字符不包含在有效集中)
知道为什么会这样吗?
非常感谢
编辑 我虽然与编码问题有关,但是在调试上述函数的返回字符串时,我可以直接看到那个奇怪的字符。 另外,使用字符集作为“#$&%£”有时会返回所有字符以及那个奇怪的A(例如:&%Â&$&#£%#Â)