LoginSignup
9
11

More than 5 years have passed since last update.

パスワード生成

Last updated at Posted at 2016-02-03

はじめに

事前に準備する外部ライブラリ等はありません。
JavaSEに含まれるjava.util.Randomクラスを使用します。

実装例

サンプルでは、動作確認しやすいようにmainメソッドで実行できるようにしてあります。
結果だけを確認したい場合は、この記事の一番下のリンク先で使えるようにしてありますのでご覧ください。

PasswordGenerator.java
import java.util.Random;

/**
 *
 * @author tool-taro.com
 */
public class PasswordGenerator {

    public static void main(String[] args) {

        //パスワード桁数
        int length = 16;
        //記号使用有無
        boolean useSign = true;
        //アルファベット大文字小文字のスタイル(normal/lowerCase/upperCase)
        String style = "normal";

        //生成処理
        StringBuilder result = new StringBuilder();
        //パスワードに使用する文字を格納
        StringBuilder source = new StringBuilder();
        //数字
        for (int i = 0x30; i < 0x3A; i++) {
            source.append((char) i);
        }
        //記号
        if (useSign) {
            for (int i = 0x21; i < 0x30; i++) {
                source.append((char) i);
            }
        }
        //アルファベット小文字
        switch (style) {
            case "lowerCase":
                break;
            default:
                for (int i = 0x41; i < 0x5b; i++) {
                    source.append((char) i);
                }
                break;
        }
        //アルファベット大文字
        switch (style) {
            case "upperCase":
                break;
            default:
                for (int i = 0x61; i < 0x7b; i++) {
                    source.append((char) i);
                }
                break;
        }

        int sourceLength = source.length();
        Random random = new Random();
        while (result.length() < length) {
            result.append(source.charAt(Math.abs(random.nextInt()) % sourceLength));
        }
        //標準出力
        System.out.format("生成結果=%1$s", result);
    }
}

動作確認

$ javac PasswordGenerator.java
$ java PasswordGenerator
$ 生成結果=gHa(hL8ImJW/VIR)

環境

  • 開発

    • Windows 10 Pro
    • JDK 1.8.0_112
    • NetBeans IDE 8.2
  • 動作検証

    • CentOS Linux release 7.2
    • JDK 1.8.0_112

上記の実装をベースにWebツールも公開しています。
パスワード生成(Password Generator)|Web便利ツール@ツールタロウ

9
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
11