Заполните массив Java всеми допустимыми символами ASCII для пароля WPA
Я пытаюсь создать генератор случайных паролей WPA, используя Java, чтобы дать мне как можно более безопасный пароль Wi-Fi, который можно изменить, когда я захочу.
Есть ли способ быстро заполнить массив всеми символами, которые разрешено использовать в пароле WPA(2), а не вводить символы вручную один за другим?
4 ответа
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);
Диапазон допустимых значений ascii составляет 32-126 (см. https://en.wikipedia.org/wiki/ASCII). Таким образом, вы можете просто сгенерировать случайное число между этими значениями для каждого символа, а затем превратить значение ascii в строку.
Ты сделаешь Character.toString ((char) i);
или же String.valueOf(Character.toChars(int))
превратить значение ASCII в строку.
Соберите 8-63 из этих персонажей, и вы получите случайную фразу wpa2.
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();
}