【发布时间】:2016-10-27 21:24:13
【问题描述】:
我有一个被称为 N 次的文件加密方法。 在该方法中,这就是我创建盐的方式:
public void method(...){
...
byte[] salt = new byte[8];
SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG",
"SUN");
secureRandom.nextBytes(salt);
...
}
我了解到 SecureRandom 对象在您调用 nextBytes 时被播种,并且只会在您第一次调用 nextBytes 时阻塞 /dev/random,因为该类的变量 seedGenerator 是静态的 (https://www.cigital.com/blog/securerandom-implementation/)。
JavaDocs on SecureRandom.getInstance(String algorithm, String provider) 说: 返回的 SecureRandom 对象尚未播种。要播种返回的对象,请调用 setSeed 方法。如果未调用 setSeed,则第一次调用 nextBytes 将强制 SecureRandom 对象自行播种。如果之前调用了 setSeed,则不会发生这种自播。
我的问题是,如果我继续创建 SecureRandom 实例并调用 nextBytes,我的代码会在 /dev/random 上阻塞吗?
提前致谢!
【问题讨论】:
标签: java cryptography