【Java】ランダムな文字列(パスワード)を生成してみる

【Java】ランダムな文字列(パスワード)を生成してみる

今回はJavaでランダムな文字列(パスワード)を生成するプログラムを書いてみたいと思います。

目次

実装したいこと

このプログラムで実現したいこととして、以下の3つの機能を実装してみたいと思います。

実装したいこと
  • 文字数を指定してランダムな文字列を生成する
  • 使う文字種はアルファベット(小文字)を基本とする
  • アルファベットの大文字と数字も使えるようにする

プログラムの実装

実際に書いてみました。StringBuilderクラスでパスワードに使う文字種を提示して、Randomクラスでランダムに文字列を選びだして生成していきます。

MakePassword.java
 1import java.util.Random;
 2
 3public class MakePassword {
 4
 5  /** 実行用mainメソッド */
 6  public static void main(String[] args) {
 7    System.out.println(makePassword(10, true, true));
 8  }
 9
10  /** パスワードを作成 */
11  private static StringBuilder makePassword(int length, boolean uppercaseFlg, boolean digitFlg) {
12    StringBuilder lowercase = new StringBuilder("abcdefghijklmnopqrstuvwxyz");
13    StringBuilder uppercase = new StringBuilder("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
14    StringBuilder digit = new StringBuilder("0123456789");
15
16    if (uppercaseFlg) {
17      lowercase.append(uppercase);
18    }
19    if (digitFlg) {
20      lowercase.append(digit);
21    }
22
23    StringBuilder password = new StringBuilder();
24
25    Random rand = new Random();
26    for (int i = 0; i < length; i++) {
27      int num = rand.nextInt(lowercase.length());
28      password.append(lowercase.charAt(num));
29    }
30
31    return password;
32  }
33}
出力結果(一例)
1qcFnJWtL8B

パスワードを生成することができました。


ランダムクラスを使うことでランダムなパスワードが作れますね。追加機能なども考えていきたいです。以上で記事を終わりにします。

関連記事