- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
浏览一些密码学的东西,我看到 RNGCryptoServiceProvider
有 2 个方法:
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/
我正在将我们的单元测试从 Moles 转换为新的 VS 2012 Fakes。我们的几个单元测试是“假的”RNGCryptoServiceProvider。我们能够“挖”出这个,但假货中似乎没有为此创
有许多经过验证且完善的伪随机数生成算法可供使用,以及其他最近受到审查的算法;我想知道 .Net 4.0 RNGCryptoServiceProvider 使用哪种算法? 在启动正在进行的项目之前,我很
我正在将我们的单元测试从 Moles 转换为新的 VS 2012 Fakes。我们的几个单元测试“伪造”RNGCryptoServiceProvider。我们能够“挖”出来,但似乎在 Fakes 中没
我正在寻找一种获取随机字符的方法。我需要一个字符串,该字符串必须至少包含 2 个大写字母、至少 1 个数字和特殊字符。这是我的代码: public static string CreateRandom
我需要一个方法,它返回从最小值到最大值的随机数,包括这两个数字。我在文章 .NET Matters: Tales from the CryptoRandom 中找到了一些代码来自 Stephen To
有谁知道为什么 RNGCryptoServiceProvider 在尝试获取大于 300,000,000 的数字时无法通过卡方检验。 我尝试获取 0-1,000,000,000 范围内的随机数,结果卡
我正在使用 RNG 加密提供程序以真正天真的方式生成一定范围内的数字: byte[] bytes = new byte[4]; int result = 0; while(result max) {
在寻找生成真正随机数的最佳尝试时,我偶然发现了这个代码示例。 寻找关于这个片段的意见。 using System; using System.Security.Cryptography; privat
使用 System.Security.Cryptography.RNGCryptoServiceProvider 与 System.Random 的优缺点是什么。我知道 RNGCryptoServic
我使用以下代码生成 1000-9999 范围内的代码: Dim byt As Byte() = New Byte(1000) {} Dim rngCrypto As New RNGCryptoServ
RNGCryptoServiceProvider.GetBytes 线程安全吗?我似乎在文档中找不到任何关于它的注释。 最佳答案 是的。这是in the "remarks" section : The
我使用以下代码生成 1000-9999 范围内的代码: Dim byt As Byte() = New Byte(1000) {} Dim rngCrypto As New RNGCryptoServ
我在编码时看到了这个,觉得它很奇怪: 果然,MSDN表示 RNGCryptoServiceProvider(byte[] rgb) 和 RNGCryptoServiceProvider(string
通过 Rfc2898DeriveBytes.GetBytes() 运行由 RNGCryptoServiceProvider 生成的加密 key (2048 位)是否有意义,或者是 Rfc2898Der
我正在将一些 C# 代码转换为 Java。我找不到与 RNGCryptoServiceProvider 等效的方法。我该怎么做? private static String GetRandomSalt
根据 RandomNumberGenerator 的 MSDN 文档: Application code does not directly use this class. This abstract
桥牌游戏使用 52 张不同的扑克牌进行,这些牌随机分配给四名玩家,每名玩家最终得到 13 张牌:即所谓的“发牌”。 Roughly a little less than 2^96 Bridge dea
这是我的方法: public static string GenerateRandomString(int bytes) { var rng = new RNGCryptoServicePro
浏览一些密码学的东西,我看到 RNGCryptoServiceProvider 有 2 个方法: link RNGCryptoServiceProvider.GetNonZeroBytes 和 RNG
我正在使用这段代码生成给定长度的随机字符串 public string RandomString(int length) { const string valid = "abcdefghijk
我是一名优秀的程序员,十分优秀!