0

ランダムなパスワードを生成しています。パスワードの長さは 8 文字で、特殊文字が含まれています。を保持するfirst letter as alphabet必要があり、残りの 7 文字をシャッフルして、mixture of alphanumeric + ascii characters.

public String generatePassword() {
        int passwordLength = MAX_PASSWORD_LENGTH;
        StringBuffer password = new StringBuffer(passwordLength);
        //first character as an alphabet
        password.append(RandomStringUtils.randomAlphabetic(1)).toString();
        String alphaNumeric = RandomStringUtils.random(5, true, true);
        String asciiChars = RandomStringUtils.randomAscii(2);
        password.append(alphaNumeric).append(asciiChars);
        return password.toString();
    }

最後の 7 文字をシャッフルするのに助けが必要です。どうやってするの?

4

2 に答える 2

1

The Java Collections API has an inbuilt shuffle method that you can use: see here. Basically, you need to create a List from the last 7 characters, and pass it to Collections.shuffle.

于 2012-08-13T07:47:00.850 に答える
0

厳密な要件がない場合は、文字をランダムに追加できます。

Random random = new Random();
for (int i = 0; i < 7; i++) {
   if (random.nextBoolean()) {
       password.append(RandomStringUtils.random(1, true, true));
   } else {
       password.append(RandomStringUtils.randomAscii(1));
   }
}

それぞれの種類が少なくとも 1 つあるという保証が必要な場合は、簡単なテストを追加できます。

boolean hasAlphaNumeric = false;
boolean hasAscii = false;
while (hasAlphaNumeric == false || hasAscii == false) {
  Random random = new Random();
  for (int i = 0; i < 7; i++) {
    if (random.nextBoolean()) {
      password.append(RandomStringUtils.random(1, true, true));
      hasAlphaNumeric = true;
    } else {
      password.append(RandomStringUtils.randomAscii(1));
      hasAscii = true;
    }
  }
}
于 2012-08-13T07:59:38.783 に答える