Не нравится какой-либо из этих ответов относительно «простого» решения: S
Я бы выбрал простой;), чистый java, один вкладыш (энтропия основана на случайной длине строки и заданный набор символов):
public String randomString(int length, String characterSet) {
return IntStream.range(0, length).map(i -> new SecureRandom().nextInt(characterSet.length())).mapToObj(randomInt -> characterSet.substring(randomInt, randomInt + 1)).collect(Collectors.joining());
}
@Test
public void buildFiveRandomStrings() {
for (int q = 0; q < 5; q++) {
System.out.println(randomString(10, "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"));//charachterSet can basically be anything
}
}
или (более читаемый старый способ)
public String randomString(int length, String characterSet) {
StringBuilder sb = new StringBuilder(); //consider using StringBuffer if needed
for (int i = 0; i < length; i++) {
int randomInt = new SecureRandom().nextInt(characterSet.length());
sb.append(characterSet.substring(randomInt, randomInt + 1));
}
return sb.toString();
}
@Test
public void buildFiveRandomStrings() {
for (int q = 0; q < 5; q++) {
System.out.println(randomString(10, "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")); //charachterSet can basically be anything
}
}
Но, с другой стороны, вы также можете использовать UUID, который довольно хорош энтропия ( https://en.wikipedia.org/wiki/Universally_unique_identifier#Collisions ):
UUID.randomUUID().toString().replace("-", "")
Надеюсь, что это поможет.