根据MSDN文档中RandomNumberGenerator的说明:
应用程序代码不直接使用此类。此抽象类作为所有加密随机数生成器的基类提供。
要实现加密随机数生成器,请使用派生类RNGCryptoServiceProvider。
然而,我在不同的代码库中看到过几次使用以下代码:
应用程序代码不直接使用此类。此抽象类作为所有加密随机数生成器的基类提供。
要实现加密随机数生成器,请使用派生类RNGCryptoServiceProvider。
然而,我在不同的代码库中看到过几次使用以下代码:
byte[] bytes = new byte[...];
RandomNumberGenerator rng = RandomNumberGenerator.Create();
rng.GetBytes(bytes);
最值得注意的是,它与 StackExchange(我认为包括 SO)和 BCrypt.Net 一起使用。
因此,我有点困惑 - 上述代码返回什么类型的 RandomNumberGenerator
? 此外,某些代码库确实使用RandomNumberGenerator
而不是RNGCryptoServiceProvider
是否有点缺陷?
我假设RandomNumberGenerator.Create()
在幕后执行,但在这里我完全错过了什么,技术上来说(因为它是一个抽象类),上面的代码不应该抛出错误吗?