【问题标题】:Java pass generator with special requirements有特殊要求的 Java 通行证生成器
【发布时间】:2020-04-17 07:16:21
【问题描述】:

我只需要一个有特殊要求的密码生成器。 我做了这个代码。它工作得很好,但是如何从这个字符串中获取 2 个特殊字符;-只有 2 个数字;- 只有 3 个小写字符;- 只有 3 个大写字符。

  private static void passGenerator(){
            int length = 8;
            String symbol = "-/.^&*_!@%=+>)";
            String cap_letter = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
            String small_letter = "abcdefghijklmnopqrstuvwxyz";
            String numbers = "0123456789";
            String finalString = cap_letter + small_letter +
                    numbers + symbol;
            Random random = new Random();
            char[] password = new char[length];
            for (int i = 0; i < length; i++)
            {
                password[i] = finalString.charAt(random.nextInt(finalString.length()));

            }
            System.out.println(password);

        }

【问题讨论】:

    标签: java arrays


    【解决方案1】:

    您可以通过apache 试用这个库。有一些有用的方法可以将字符串拆分为不同大小写的字符,完全不同的字符(a3 将是 a, 3)

    【讨论】:

      【解决方案2】:

      我会首先按特定顺序生成密码并将其存储在一个临时变量中,如下所示:

      { special1, special2, digit1, digit2, lower1, lower2, lower3, upper1, upper2, upper3}
      

      这可能需要硬编码。

      接下来,我将创建一个新的密码变量,并逐个选择一个字符并将其添加到新变量中。通过随机生成一个数字 [0, temp.length) 来做到这一点。然后,将该索引处的字符复制到新密码中未填充的最低点,将其从临时文件中删除,并将所有剩余的字符复制到一个新的临时数组中,该数组小一个元素。重复直到临时数组大小为零。

      【讨论】:

        猜你喜欢
        • 2015-09-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-13
        • 1970-01-01
        • 1970-01-01
        • 2015-06-10
        相关资源
        最近更新 更多