SecureRandom self-seeding
我发现了很多关于
1 2 |
或者像这样:
1 2 3 4 5 6 7 8 9 | try { Random random = SecureRandom.getInstance("SHA1PRNG"); int randomInteger = random.nextInt(); } catch (NoSuchAlgorithmException exception) { // ... } |
或者类似的东西。
但是,
The returned
SecureRandom object has not been seeded. To seed the returned object, call thesetSeed method. IfsetSeed is not called, the first call tonextBytes will force theSecureRandom object to seed itself. This self-seeding will not occur ifsetSeed was previously called.
因此,在上面的例子中,
The method
nextInt is implemented by classRandom as if by:
1 2 3 | public int nextInt() { return next(32); } |
因此,没有调用
我的问题是:上面的
正如评论中正确指出的那样,从源代码来看,
有了Sun的JRE,不播种就可以使用
Java平台的另一个实现可以提供一个EDCOX1"0",它可以在没有播种的情况下使用,而仍然符合文件化的接口?对。那会很糟糕吗?哦,是的。有没有一个实施者会如此愚蠢以至于做这样的事情?大概不会。这是Java程序员需要担心的吗?不。