首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >RNGCryptoServiceProvider过时了

RNGCryptoServiceProvider过时了
EN

Stack Overflow用户
提问于 2022-05-28 19:36:29
回答 1查看 3.9K关注 0票数 10

我需要用随机数字和字母生成一个令牌。然而,错误信息告诉我使用RandomNumberGenerator,这只会给我一些没有帮助的随机数。

错误信息

'RNGCryptoServiceProvider‘过时了:'RNGCryptoServiceProvider过时了。要生成随机数,请使用RandomNumberGenerator静态方法之一。’

当前使用的代码

代码语言:javascript
运行
复制
    private static string RandomString()
    {
        int length = 256;
        const string valid = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
        StringBuilder res = new StringBuilder();
        using (RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider())
        {
            byte[] uintBuffer = new byte[sizeof(uint)];

            while (length-- > 0)
            {
                rng.GetBytes(uintBuffer);
                uint num = BitConverter.ToUInt32(uintBuffer, 0);
                res.Append(valid[(int)(num % (uint)valid.Length)]);
            }
        }
        return res.ToString();
    }

如何将上面的代码更改为使用不过时的包?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-28 23:48:55

您可以这样使用RandomNumberGenerator

代码语言:javascript
运行
复制
var randomNumber = new byte[32];
string refreshToken = "";

using (var rng = RandomNumberGenerator.Create())
{
     rng.GetBytes(randomNumber);
     refreshToken = Convert.ToBase64String(randomNumber);
}

结果示例:fHu4SOyv03PhHvqWx5WGmI5xQFnH00CmLCV3IYJd5Dw=

把这个调到你的案子上。

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72418725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档