【问题标题】:Populate java array with all allowable ASCII chars for WPA password使用 WPA 密码的所有允许的 ASCII 字符填充 java 数组
【发布时间】:2015-11-29 19:25:59
【问题描述】:

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

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

【问题讨论】:

    标签: java auto-populate wpa


    【解决方案1】:

    我能想到的最短方法是:

    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);
    

    【讨论】:

    • 我没有看到String有一个int[]构造函数,我也想用Stream版本。
    【解决方案2】:
    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;
    }
    

    【讨论】:

      【解决方案3】:

      有效 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 密码。

      【讨论】:

      • 你从哪里得到 36?此外,您确实应该指出 176 是八进制值。或者,由于几乎没有人再使用八进制,所以使用十六进制(但要指出它是十六进制,例如使用 U+ 或 0x)。
      • @VGR 那里的范围有错字。并且 32-126 应该是十进制值。
      • 我很好奇,因为我最初实际上引用了同一个列表
      【解决方案4】:
      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();
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-09
        • 2012-06-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多