我需要用随机数字和字母生成一个令牌。然而,错误信息告诉我使用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();
}
如何将上面的代码更改为使用不过时的包?
发布于 2022-05-28 23:48:55
您可以这样使用RandomNumberGenerator
:
var randomNumber = new byte[32];
string refreshToken = "";
using (var rng = RandomNumberGenerator.Create())
{
rng.GetBytes(randomNumber);
refreshToken = Convert.ToBase64String(randomNumber);
}
结果示例:fHu4SOyv03PhHvqWx5WGmI5xQFnH00CmLCV3IYJd5Dw=
把这个调到你的案子上。
https://stackoverflow.com/questions/72418725
复制相似问题