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