パスワードポリシー実施ライブラリであるPasayを利用する。
設定可能なルールセットを使用してパスワードを生成することができる。
MavenプロジェクトでPasayを利用するための設定
pom.xml
<dependency>
<groupId>org.passay</groupId>
<artifactId>passay</artifactId>
<version>1.6.0</version>
</dependency>
大文字小文字英数字混合の8桁のパスワードを生成するコード
Password.java
public class Password {
public static String generate() {
List<CharacterRule> rules = Arrays.asList(
new CharacterRule(EnglishCharacterData.UpperCase, 1),
new CharacterRule(EnglishCharacterData.LowerCase, 1),
new CharacterRule(EnglishCharacterData.Digit, 1)
);
PasswordGenerator generator = new PasswordGenerator();
String password = generator.generatePassword(8, rules);
return password;
}
}
テストコード
PasswordTest.java
public class PasswordTest {
@Test
public void testGenerate() {
String password = Password.generate();
assertTrue(password.length() == 8);
assertTrue(password.matches(".*[a-z].*"));
assertTrue(password.matches(".*[0-9].*"));
assertTrue(password.matches(".*[A-Z].*"));
}
}