我知道Random
类生成不安全的随机序列,在处理安全性时我更应该使用SecureRandom
。但是ThreadLocalRandom
呢?它或多或少安全吗?
// generate a five-digit numeric confirmation code
Long code = ThreadLocalRandom.current().nextLong(1, 99999);
答案 0 :(得分:5)
如its javadoc中所述,ThreadLocalRandom
与Random
类似(即不安全),但在并发访问时效果更佳。
ThreadLocalRandom
的实例不具有加密安全性。请考虑在安全敏感的应用程序中使用SecureRandom
。
答案 1 :(得分:4)
ThreadLocalRandom
类似ThreadLocal<Random>
,每个线程创建Random
个实例。这与加密环境中的安全无关。
所以问题是“Random
和SecureRandom
”实施之间有什么区别。
SecureRandom
的不同之处在于,通过了密码学安全所需的测试。它正好通过了 FIPS 140-2 (密码学中使用的生成器标准)指定的测试。有关详细信息,请参阅SecureRandom javadoc。