我一直在使用RandomStringUtils
来生成随机ID,用作数据库键:
import org.apache.commons.lang.RandomStringUtils;
public class RandomStringTest {
public static void main(final String[] args) {
for (int i = 0; i <= 10; i++) {
final String id = RandomStringUtils.random(8,
"0123456789abcdefghijklmnopqrstuvwxyz");
System.out.println(id);
}
}
}
关键空间足够大,
len("0123456789abcdefghijklmnopqrstuvwxyz")^8 = 2821109907456 ≃ 10^12
随机机制是否已经正常启动?在将其应用到生产环境之前,我需要了解密钥是否被正确分配。
顺便说一下,测试代码在执行几次时没有重复出现,但这远非坚实的证明。
Random
实例是否会被进一步调用RandomStringUtils.*
使用?这个模块的文档太糟糕了 :-( - jameshfishernew Random();
。所有其他方法最终似乎都会使用答案中的方法,使用静态随机数。如果您传递自己的随机数,则不会存储该随机数,因此不会在后续调用中使用。此包中还有一个“随机”实用程序(RandomUtils),它们不共享代码。 - Joost