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(".*[1-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クラスでもランダム生成できるようです。
参考サイト

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