gpt4 book ai didi

c# - 为什么 RNGCryptoServiceProvider 的构造函数会忽略它的参数?

转载 作者:行者123 更新时间:2023-11-30 17:42:26 26 4
gpt4 key购买 nike

我在编码时看到了这个,觉得它很奇怪:

enter image description here

果然,MSDN表示 RNGCryptoServiceProvider(byte[] rgb)RNGCryptoServiceProvider(string str) 都忽略了它们的参数。据我所知,这两者与 RNGCryptoServiceProvider() 之间没有实际区别。到底是怎么回事?我怀疑我遗漏了一些与密码学有关的奇怪东西。

最佳答案

它可能是以前旧版本的遗留物,可能会追溯到 1.x,甚至 2.0 API 也包含相同的描述。然而,2.0 和 2.1 API 很可能同时发生了变化。

如果您查看 Mono 源代码,您会发现

_handle = RngInitialize (rgb);

_handle = RngInitialize (Encoding.UTF8.GetBytes (str));

所以我假设数据被用作平台提供的随机数生成器的附加或初始种子。这也是最有意义的。 Mono 源通常尽可能遵循 MS 实现。

如果提供 RNG 的平台是安全的,则可能几乎不需要从应用程序中播种。使用 RNG 作为方法一遍又一遍地生成相同的流(即当参数用作初始种子时)充满了危险,尤其是在底层实现未知并且平台和系统更新之间可能不同的情况下。因此,这将是弃用构造函数的一个很好的理由。

很明显,如果它们只是被删除,那么旧的源代码将无法再编译。因此,将实现留空更为合乎逻辑,因为结果实例无论如何都应该生成随机数据。


最后这只是一个(非常)有根据的猜测,当前的 API 文档中没有具体说明原因。构造函数似乎也没有标记为过时。换言之,我对 Microsoft 加密 API 文档的所有期望。

关于c# - 为什么 RNGCryptoServiceProvider 的构造函数会忽略它的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31996222/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com