首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 隨機字串產生器:支援多種字元集與長度自訂

     編輯:Java 相關知識

前言

產生隨機密碼、驗證碼、Token 時常需自訂字元集(小寫、大寫、數字、符號)。本文提供一個 PassWord 工具類,使用枚舉定義字元集組合,靈活產生指定長度的隨機字串。

核心程式碼

import java.util.*;

public class RandomStringGenerator {
    public enum CharSet {
        LOWER("abcdefghijklmnopqrstuvwxyz"),
        UPPER("ABCDEFGHIJKLMNOPQRSTUVWXYZ"),
        DIGIT("0123456789"),
        SYMBOL("~!@#$%^&*()_+-=[]{}|:;<>,.?/");

        final String chars;
        CharSet(String chars) { this.chars = chars; }
    }

    private static final Random RND = new Random();

    /**
     * 產生隨機字串
     * @param length 長度
     * @param sets 使用的字元集(可多選)
     * @return 隨機字串
     */
    public static String generate(int length, CharSet... sets) {
        StringBuilder pool = new StringBuilder();
        for (CharSet s : sets) pool.append(s.chars);
        if (pool.isEmpty()) throw new IllegalArgumentException("至少需選一個字元集");

        char[] result = new char[length];
        for (int i = 0; i < length; i++) {
            result[i] = pool.charAt(RND.nextInt(pool.length()));
        }
        return new String(result);
    }

    public static void main(String[] args) {
        System.out.println(generate(16, CharSet.UPPER, CharSet.DIGIT)); // 如 A7K9...
        System.out.println(generate(24, CharSet.values())); // 全字元集
    }
}

使用範例

// 8 碼純數字驗證碼
String otp = RandomStringGenerator.generate(6, CharSet.DIGIT);

// 12 碼強密碼(大小寫+數字+符號)
String pwd = RandomStringGenerator.generate(12, CharSet.LOWER, CharSet.UPPER, CharSet.DIGIT, CharSet.SYMBOL);

安全性提醒

  • java.util.Random 非加密安全,產生密碼/Token 請改用 SecureRandom。
  • 字元集應排除易混淆字元(如 l/1、O/0)以提升可讀性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved