Gol*_*avo 46 .net c# asp.net .net-6.0
我需要使用随机数字和字母生成令牌。但是,错误消息告诉我使用 RandomNumberGenerator ,它只会给我随机数,这没有帮助。
错误信息
“RNGCryptoServiceProvider”已过时:“RNGCryptoServiceProvider 已过时”。要生成随机数,请使用 RandomNumberGenerator 静态方法之一。
当前使用的代码
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();
}
Run Code Online (Sandbox Code Playgroud)
如何更改上面的代码以使用未过时的包?
SVa*_*Dev 67
RandomNumberGenerator你可以这样使用:
var randomNumber = new byte[32];
string refreshToken = "";
using (var rng = RandomNumberGenerator.Create())
{
rng.GetBytes(randomNumber);
refreshToken = Convert.ToBase64String(randomNumber);
}
Run Code Online (Sandbox Code Playgroud)
结果示例:fHu4SOyv03PhHvqWx5WGmI5xQFnH00CmLCV3IYJd5Dw=
只需根据您的情况进行调整即可。
| 归档时间: |
|
| 查看次数: |
14308 次 |
| 最近记录: |