我应该更喜欢ThreadLocalRandom还是SecureRandom?

时间:2017-06-12 14:38:45

标签: java security random

我知道Random类生成不安全的随机序列,在处理安全性时我更应该使用SecureRandom。但是ThreadLocalRandom呢?它或多或少安全吗?

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

2 个答案:

答案 0 :(得分:5)

its javadoc中所述,ThreadLocalRandomRandom类似(即不安全),但在并发访问时效果更佳。

  

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

答案 1 :(得分:4)

ThreadLocalRandom类似ThreadLocal<Random>,每个线程创建Random个实例。这与加密环境中的安全无关。

所以问题是RandomSecureRandom实施之间有什么区别。

SecureRandom的不同之处在于,通过了密码学安全所需的测试。它正好通过了 FIPS 140-2 (密码学中使用的生成器标准)指定的测试。有关详细信息,请参阅SecureRandom javadoc。