BouncyCastle在C#threadsafe中的SecureRandom?
对于Java中的实现,答案显然是肯定的,但是C#中的Org.BouncyCastle.Security.SecureRandom
怎么样?
因为,据我所知,没有C#Bouncy Castle端口的官方(甚至任何)文档 – 我们所能做的就是查看源代码并尝试得出一些结论。 这是SecureRandom的源代码。 我们可以看到主要方法有NextCounterValue
(用于生成种子)和NextBytes
用于生成实际随机数据。 NextCounterValue
是线程安全的(使用Interlocked.Increment
)。 NextBytes
将实现转发给IRandomGenerator
实例。 由于您可以将任何IRandomGenerator
实例IRandomGenerator
给SecureRandom
构造函数 – 我们可以得出结论,它的线程安全性取决于所使用的IRandomGenerator
。
此外,在完整的.NET Framework上, SecureRandom
使用CryptoApiRandomGenerator作为主生成器(生成种子),而这只是.NET RNGCryptoServiceProvider
包装,我们知道它是线程安全的。
如果您只是在不传递任何IRandomGenerator
情况下创建SecureRandom
,该IRandomGenerator
办? 然后它将创建DigestRandomGenerator
( 代码 )的实例,它似乎是线程安全的(在NextBytes
使用简单lock
)。
总而言之,如果你没有传递一个IRandomGenerator
不是线程安全的IRandomGenerator
实例,我们可以说SecureRandom
是线程安全的。
上述就是C#学习教程:BouncyCastle在C#threadsafe中的SecureRandom?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/953164.html