使用WPA密码的所有允许ASCII字符填充java数组

使用WPA密码的所有允许ASCII字符填充java数组,java,auto-populate,wpa,Java,Auto Populate,Wpa,我正在尝试使用java创建一个随机的WPA密码生成器,以尽可能安全地提供Wifi密码,可以在我需要时更改 是否有一种方法可以使用WPA(2)密码中允许使用的所有字符快速填充数组,而不是逐个手动输入字符?有效ascii值的范围是32-126(请参阅)。因此,您只需在每个字符的这些值之间生成一个随机数,然后将ascii值转换为字符串 是吗 Character.toString((char)i)或String.valueOf(Character.toChars(int))将ascii值转换为字符串 将

我正在尝试使用java创建一个随机的WPA密码生成器,以尽可能安全地提供Wifi密码,可以在我需要时更改


是否有一种方法可以使用WPA(2)密码中允许使用的所有字符快速填充数组,而不是逐个手动输入字符?

有效ascii值的范围是32-126(请参阅)。因此,您只需在每个字符的这些值之间生成一个随机数,然后将ascii值转换为字符串

是吗
Character.toString((char)i)
String.valueOf(Character.toChars(int))
将ascii值转换为字符串

将这些字符中的8-63个放在一起,您就有了一个随机的wpa2密码短语。

int pwLength=8;
int pwLength = 8;
Random numberGenerator = new Random();
char[] pw = new char[pwLength];
for(int i = 0; i<pwLength; i++){
    pw[i] = numberGenerator.nextInt(95) + 32;
}
随机数生成器=新随机数(); char[]pw=新字符[pwLength];
对于(inti=0;i我能想到的最短的方法是:

String s = new String(IntStream.rangeClosed(32, 126).toArray(), 0, 95);
char[] ascii = s.toCharArray();
如果只是生成一个字符序列,则不需要生成所有ASCII字符的数组:

String s = new String(random.ints(length, 32, 127).toArray(), 0, length);
private void buildPassword(){
对于(int i=33;i<127;i++){
l、 加(i);
}
l、 移除(新整数(34));
l、 移除(新整数(47));
l、 删除(新整数(92));
对于(int i=0;i<10;i++){
randInt=l.get(newsecurerandom().nextInt(91));
sb.追加((char)randInt);
}
str=sb.toString();
}

36是从哪里来的?另外,你真的应该指出176是一个八进制值。或者,因为几乎没有人再使用八进制了,所以使用十六进制(但要指出它是十六进制,比如U+或0x)@VGR在那里的范围上有一个输入错误。32-126应该是十进制值。我很好奇,因为我实际上引用了相同的列表。我没有看到字符串有int[]构造函数,我还想使用流版本。
private void buildPassword() {
        for (int i = 33; i < 127; i++) {
            l.add(i);
        }

        l.remove(new Integer(34));
        l.remove(new Integer(47));
        l.remove(new Integer(92));

        for (int i = 0; i < 10; i++) {
            randInt = l.get(new SecureRandom().nextInt(91));
            sb.append((char) randInt);
        }

        str = sb.toString();
    }