答えは明らかにJavaの実装ではyesですが、C#ではどのようにOrg.BouncyCastle.Security.SecureRandom
?C#threadsafeのBouncyCastleのSecureRandomはありますか?
2
A
答えて
2
私が知る限り、C#Bouncy Castleポートの公式(または任意の)ドキュメントはないので、ソースコードを見ていくつかの結論を出すことができます。ソースコードはSecureRandomです。我々は、そこにある主な方法は、NextCounterValue
(種を生成するために使用される)とNextBytes
が実際のランダムなデータを生成するために使用されていることがわかります。 NextCounterValue
はスレッドセーフです(Interlocked.Increment
を使用)。 NextBytes
の実装をIRandomGenerator
のインスタンスに転送します。 IRandomGenerator
のインスタンスをSecureRandom
のコンストラクタに渡すことができるので、スレッドの安全性はIRandomGenerator
のものに依存していると判断できます。
た場合も、完全な.NET Frameworkの上、SecureRandom
は(種を生成する)マスタ・ジェネレータとしてCryptoApiRandomGeneratorを使用し、その一つはちょうど私達が知っているように、スレッドセーフである周りの.NET RNGCryptoServiceProvider
をラッパーです。
IRandomGenerator
を一切渡さずにSecureRandom
を作成するとどうなりますか?次にDigestRandomGenerator
(code)のインスタンスが作成され、スレッドセーフ(には単純lock
が使用されます)のように見えます。
スレッドセーフでないIRandomGenerator
のインスタンスを渡さないと、SecureRandom
はスレッドセーフであると言えるでしょう。
関連する問題
- 1. JAVAの "threadsafe"修飾子はありますか?
- 2. CWnd :: GetSafeHwnd()とCWnd :: m_hWnd ThreadSafeはありますか?
- 3. BouncyCastle以外のオープンソースのJCEライブラリはありますか?
- 4. mctのbctls(Bouncycastle TLS)はありますか?
- 5. Bouncycastle HKDFBytesGeneratorのC#相当ですか?
- 6. はpython dict.items()threadsafeですか?
- 7. java.util.concurrent.Future threadsafeですか?
- 8. SecureRandom numberのアルゴリズム
- 9. hadoopの仕事はThreadSafeですか?
- 10. SecureRandom hash
- 11. SecureRandomの自己シード
- 12. Pythonでは、set.pop()はthreadsafeですか?
- 13. NSUserDefaults threadsafe
- 14. ThreadSafe Parallel.For
- 15. RubyのSecureRandomのとn
- 16. FlywayのC#APIはありますか?
- 17. CのBigDecimalクラスはありますか?
- 18. ungetcのC++バージョンはありますか?
- 19. Cのクロスプラットフォームフレームワークはありますか?
- 20. C#のインラインプロパティはありますか?
- 21. C#のGuavaはありますか?
- 22. はBouncyCastle、デスクトップ/ Androidの
- 23. ランダムな対ゲームのSecureRandom
- 24. JavaのSecureRandom安全なシード
- 25. @GuardedBy、@ThreadSafe、@ NotThreadSafe
- 26. Form.Show()とForm.Visible ThreadSafe
- 27. Google App Engine ThreadSafe
- 28. Threadsafe java servlet
- 29. のJava、JavaでははBouncyCastle
- 30. Windows 7ではC:とC:\の違いはありますか?
関連する(これは、このクラスを正しく使用する方法についての文書化されていない基本事項もあるので):https://stackoverflow.com/q/46792373/1709587 –