2017-06-12 9 views
2

私はRandomクラスが安全でないランダムシーケンスを生成することを知っています。セキュリティを扱うときはSecureRandomを使用するほうがよいでしょう。しかし、ThreadLocalRandomはどうですか?多かれ少なかれ安全ですか?私はThreadLocalRandomまたはSecureRandomを好むべきでしょうか?

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

答えて

4

its javadocで説明したように、ThreadLocalRandomRandomと同様(すなわち、安全ではない)が、同時アクセスの場合に良好な性能です。

ThreadLocalRandomのインスタンスは、暗号的に安全ではありません。代わりにセキュリティに敏感なアプリケーションでSecureRandomを使用することを検討してください。

4

ThreadLocalRandomは、スレッドごとにRandomインスタンスを作成しますThreadLocal<Random>のようなものです。これは、暗号文脈の安全性とは関係ありません。

したがって、質問はです。Randomと "の違いは何ですか?

SecureRandomが異なる点は、が、暗号の安全性のために必要なテストに合格したことです。。正確には、FIPS 140-2(暗号化に使用されるジェネレータの標準)で指定されたテストに合格しました。詳細については、SecureRandom javadocを参照してください。

関連する問題