使用 WPA 密码的所有允许的 ASCII 字符填充 java 数组
Populate java array with all allowable ASCII chars for WPA password
我正在尝试使用 java 创建一个随机 WPA 密码生成器,以尽可能安全地提供 Wifi 密码,我可以根据需要更改密码。
有没有办法用 WPA(2) 密码中允许使用的所有字符快速填充一个数组,而不是一个一个地手动输入字符?
嗯,有效的 ascii 值范围是 32-126(参见 https://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters)。因此,您可以简单地为每个字符在这些值之间生成一个随机数,然后将 ascii 值转换为字符串。
你有
Character.toString ((char) i);
或 String.valueOf(Character.toChars(int))
将 ascii 值转换为字符串。
将这些字符中的 8-63 个放在一起,您就拥有了一个随机的 wpa2 密码。
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;
}
我能想到的最短方式是:
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() {
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();
}
我正在尝试使用 java 创建一个随机 WPA 密码生成器,以尽可能安全地提供 Wifi 密码,我可以根据需要更改密码。
有没有办法用 WPA(2) 密码中允许使用的所有字符快速填充一个数组,而不是一个一个地手动输入字符?
嗯,有效的 ascii 值范围是 32-126(参见 https://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters)。因此,您可以简单地为每个字符在这些值之间生成一个随机数,然后将 ascii 值转换为字符串。
你有
Character.toString ((char) i);
或 String.valueOf(Character.toChars(int))
将 ascii 值转换为字符串。
将这些字符中的 8-63 个放在一起,您就拥有了一个随机的 wpa2 密码。
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;
}
我能想到的最短方式是:
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() {
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();
}