Javaでランダムパスワードを生成する
Javaでjava.util.Randomクラスを使用してパスワードを生成します。
12文字のランダムパスワードを生成します。
import java.util.ArrayList; import java.util.List; import java.util.Random; public class Hoge { private static int COUNT = 12; public static void main(String[] args) { final StringBuilder sb = new StringBuilder( "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!#$%"); final Random rand = new Random(); final StringBuilder password = new StringBuilder(); IntStream.rangeClosed(0, 11).forEach(i -> { final int num = rand.nextInt(sb.length()); password.append(sb.charAt(num)); }); System.out. println(password); // qQYXxQFxZEaB } }
ランダム12文字の文字列が生成されました。
条件付き(正規表現)
- 小文字アルファベットを含む
- 大文字アルファベットを含む
- 数字を含む
- 記号を含む
この条件を満たすパスワードを生成します。
import java.util.ArrayList; import java.util.List; import java.util.Random; import java.util.stream.IntStream; public class Hoge { public static void main(String[] args) { String password = null; boolean a = true; while (a) { final List<Boolean> checks = new ArrayList<>(); password = pass(); // pass生成 checks.add(password.matches(".*[a-z].*")); checks.add(password.matches(".*[A-Z].*")); checks.add(password.matches(".*[0-9].*")); checks.add(password.matches(".*[!#$%].*")); a = !checks.stream().allMatch(e -> e.equals(Boolean.TRUE)); System.out.println(password); } } public static String pass() { final StringBuilder sb = new StringBuilder( "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!#$%"); final StringBuilder password = new StringBuilder(); final Random rand = new Random(); IntStream.rangeClosed(0, 11).forEach(i -> { final int num = rand.nextInt(sb.length()); password.append(sb.charAt(num)); }); return password.toString(); } }
Apache CommonsのRandomStringUtilsクラスでもランダム生成できるようです。
その他条件(正規表現)
その他、条件です。
コード | 内容 |
---|---|
password.matches(“.@.“); | @を含む |
password.matches(“^[A-Za-z0-9][.]$”); | 1文字目が英数字、2文字目がドットで終わる文字列 |
password.matches(“^\.[A-Za-z0-9].*$”); | ドットから始まる任意の英数字の文字列 |
password.matches(“^.{4,18}$”) | 4文字以上18文字以下 |
参考サイト

KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント