gpt4 book ai didi

c# - RNGCryptoServiceProvider 和 Zeros?

转载 作者:太空狗 更新时间:2023-10-29 17:46:49 25 4
gpt4 key购买 nike

浏览一些密码学的东西,我看到 RNGCryptoServiceProvider 有 2 个方法:

link

RNGCryptoServiceProvider.GetNonZeroBytes

RNGCryptoServiceProvider.GetBytes 

所以我问:

什么是 奇数 与用强加密的随机值序列填充字节数组,其中一些(0 或更多) 是零?(它是随机值,显然不会有很多零,但零也是一个常规数字)

为什么他们创造了与众不同的?

最佳答案

在 .NET 框架内,GetNonZeroBytes(byte[])在为 RSA 加密生成 PKCS#1 填充时使用,它使用 0x00 作为分隔符。

使用像 Reflector 这样的工具,你可以看到它在 RSAPKCS1KeyExchangeFormatter.CreateKeyExchange(byte[]) 中的使用根据 RFC 2313 实现填充,第 8.1.2 节(RFC 3218 有一些很好的 ASCII 艺术,可以更清楚地演示字节布局)。

GetNonZeroBytes(byte[])也可用于制盐。 Cryptography StackExchange 站点有 a similar question这表明避免 0x00 是为了帮助可能将 salt 视为零终止字符串的库和 API,这会意外截断 salt。但是,除非有人使用 P/Invoke ,这在 .NET 中不太可能成为问题。

关于c# - RNGCryptoServiceProvider 和 Zeros?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12703851/

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