Заполните массив 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();
    }
Другие вопросы по тегам