【发布时间】:2012-06-19 10:38:35
【问题描述】:
尽管关注了很多关于SecureRandom的文章,但我还是对Java中SecureRandom安全API的使用产生了疑问。在下面的例子中。
public class SecureRandomNumber {
public static void main(String[] args) throws NoSuchAlgorithmException {
TreeSet<Integer> secure = new TreeSet<Integer>();
TreeSet<Integer> unSecure = new TreeSet<Integer>();
SecureRandom sr = new SecureRandom();
byte[] sbuf = sr.generateSeed(8);
ByteBuffer bb = ByteBuffer.wrap(sbuf);
long d = bb.getLong();
sr.setSeed(d);
Random r = new Random();
r.setSeed(System.nanoTime());
for (int k = 0; k < 99999; k++) {
int i = sr.nextInt();
if (!secure.add(i)) {
System.out.println("Repeated Secure Random Number");
} else {
// System.out.println("************Unique***********");
}
int j = r.nextInt();
if (!unSecure.add(j)) {
System.out.println("Repeated UnSecure Random Number");
}
}
}
}
当我运行这个程序时,我没有发现使用SecureRandom 的任何额外好处,因为它几乎给出了相同的结果。
谁能告诉我我在这里做的是否正确?
【问题讨论】:
标签: java algorithm security random cryptography