【发布时间】:2015-02-22 20:55:11
【问题描述】:
我对@987654322@ 的用法有点困惑。我需要在循环中生成 n secure 随机数。每一代都使用相同的 SecureRandom 实例是否安全?以下解决方案在加密强度方面有什么区别吗?
1) 没有种子的单实例
SecureRandom sr = new SecureRandom();
for(int i = 0; i < n; ++i) sr.nextInt();
2) 每一代的新实例
for(int i = 0; i < n; ++i) new SecureRandom().nextInt();
3) 带种子的单个实例
SecureRandom sr = new SecureRandom()
for(int i = 0; i < n; ++i) {
byte[] seed = sr.generateSeed(32);
sr.setSeed(seed);
sr.nextInt();
}
【问题讨论】:
-
“我需要在一个循环中生成 n 个随机数”——第一个问题是,你需要随机数,还是安全随机数。如果是前者,那么您不需要
SecureRandom。您可以使用Linear Congruential Generator。 LCG 适用于模拟,您需要从均匀分布中快速获得数字。
标签: java security random cryptography