2017-06-12 92 views
2

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

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

回答

4

its javadoc描述,ThreadLocalRandom类似于Random(即不安全)但在并发访问的情况下更好的性能。

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

4

ThreadLocalRandom类似于ThreadLocal<Random>,它为每个线程创建Random实例。这与密码术语中的安全无关。

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

SecureRandom不同之处在于它通过了​​密码学中安全性要求的测试。它确实通过了由FIPS 140-2(用于密码学的发生器的标准)指定的测试。欲了解更多详情,请参阅SecureRandom javadoc。

相关问题