Без гуглежки побыстрому накатал вот это:
public static String generateRandomString(){
byte[] bb = new byte[32];
new SecureRandom().nextBytes(bb);
return new BigInteger(1, bb).toString(36);
}
Работает правильно, но валик так не думает.
Этой скотине обязательно нужно использование конструктора BigInteger(int numBits, Random rnd)?