Во многих приложениях Java возникает необходимость в генерации псевдослучайной альфа-числовой строки. Это может быть полезно во многих случаях, например, для создания уникального идентификатора сессии, ключа или сложного пароля. Строка должна быть «вероятно» уникальной при многократной генерации, например, более 500 тысяч раз. Идеально, если можно задать длину строки в зависимости от потребностей в уникальности. Например, сгенерированная строка длиной 12 символов может выглядеть как «AEYGF7K0DM1X».
В Java можно использовать класс Random
или SecureRandom
для генерации псевдослучайных чисел, которые затем можно преобразовать в символы.
Следующий пример демонстрирует, как это можно сделать:
import java.security.SecureRandom; public class RandomStringGenerator { private static final String CHAR_LOWER = "abcdefghijklmnopqrstuvwxyz"; private static final String CHAR_UPPER = CHAR_LOWER.toUpperCase(); private static final String NUMBER = "0123456789"; private static final String DATA_FOR_RANDOM_STRING = CHAR_LOWER + CHAR_UPPER + NUMBER; private static SecureRandom random = new SecureRandom(); public static String generateRandomString(int length) { if (length < 1) throw new IllegalArgumentException(); StringBuilder sb = new StringBuilder(length); for (int i = 0; i < length; i++) { // 0-62 (включительно) int rndCharAt = random.nextInt(DATA_FOR_RANDOM_STRING.length()); // случайные символы из DATA_FOR_RANDOM_STRING char rndChar = DATA_FOR_RANDOM_STRING.charAt(rndCharAt); sb.append(rndChar); } return sb.toString(); } }
В этом коде используется SecureRandom
для генерации случайного индекса символа в строке DATA_FOR_RANDOM_STRING
, которая содержит все допустимые символы для генерации строки.
Длина генерируемой строки задается при вызове метода generateRandomString
. Если требуется строка длиной 12 символов, вызов метода будет выглядеть так:
String randomString = RandomStringGenerator.generateRandomString(12);
Этот простой и эффективный метод позволяет генерировать псевдослучайные альфа-числовые строки заданной длины в Java.
Добавить комментарий