security - 使用 .NET Core 生成哈希

标签 security random hash .net-core

我需要生成随机唯一哈希值,以便在 .Net Core 中的密码重置链接中使用。在 ASP.NET Identity 中,我发现这很有帮助,我想知道 RNGCryptoServiceProvider 是否仍能确保生成的哈希值的随机性。

 using (RNGCryptoServiceProvider rngCsp = new RNGCryptoServiceProvider())
            {
                var data = new byte[4];
                for (int i = 0; i < 10; i++)
                {
                    //filled with an array of random numbers
                    rngCsp.GetBytes(data);
                    //this is converted into a character from A to Z
                    var randomchar = Convert.ToChar(
                        //produce a random number 
                        //between 0 and 25
                        BitConverter.ToUInt32(data, 0) % 26
                        //Convert.ToInt32('A')==65
                                              + 65
                    );
                    token.Append(randomchar);
                }
            }

使用 .net core 和使用哪些类来实现这一目标的最佳方法是什么?

最佳答案

RNGCryptoServiceProvider 不在 .NET Core 中。使用 RandomNumberGenerator.Create() 获取可在正确平台上运行的 CSPRNG 实例。它的 API 与 RNGCryptoServiceProvider 相同,只是缺少 GetNonZeroBytes(我认为它根本不应该存在)。

在 Windows 上,这将归结为 CNG 中的 BCryptGenRandom,而在 Linux 上,它将使用 OpenSSL。

关于security - 使用 .NET Core 生成哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40309691/

相关文章:

algorithm - 洗牌数组的最佳算法

python - 十六进制到字符串,python 方式,在 powershell 中

ruby - 格式化复杂哈希 - simple_form gem

windows - Windows XP 是否支持带 AES256 的 TLS1.1?

c# - .net 中公钥加密的最佳方法

random - 从数组中采样 N 个元素的函数

Python numpy 根据概率生成随机二进制值数组

c# - 将来自现有 asp.net-mvc 站点的一些调用暴露给 Intranet 中的其他 REST 客户端?

javascript - 在 IE 中打开时 Iframe 内的导航问题

ruby - 按值降序排列散列,然后按升序键入 ruby