我应该更喜欢ThreadLocalRandom还是SecureRandom?

naX*_*aXa 5 java security random

我知道Random该类会产生不安全的随机序列,我更倾向于SecureRandom在处理安全性时使用.但那怎么样ThreadLocalRandom?它或多或少安全吗?

// generate a five-digit numeric confirmation code
Long code = ThreadLocalRandom.current().nextLong(1, 99999);
Run Code Online (Sandbox Code Playgroud)

ass*_*ias 6

正如所描述的javadoc中,ThreadLocalRandom类似于Random(即不固定),但在并发访问情况下更好的性能.

实例ThreadLocalRandom不具有加密安全性.请考虑SecureRandom在安全敏感的应用程序中使用.


mat*_*oni 5

ThreadLocalRandom类似于ThreadLocal<Random>Random每个线程创建实例。这与加密上下文中的安全性无关。

因此,问题是RandomSecureRandom实现之间的区别什么

SecureRandom不同之处在于,它通过了加密安全性所需的测试。它确实通过了FIPS 140-2(密码学生成器的标准)指定的测试。有关更多详细信息,请参见SecureRandom javadoc。