生成10位安全令牌
本文关键字:令牌 安全 10位 生成 | 更新日期: 2023-09-27 18:24:09
我正在研究生成10位安全令牌的算法和方法。我试过以下几种:
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
var buffer = new byte[4];
rng.GetBytes(buffer);
int result = BitConverter.ToInt32(buffer, 0);
var token = Math.Abs(result).ToString();
问题是RNGCryptoServiceProvider似乎返回了大约9到10位数字。如果它包含的数字少于10,我会考虑添加一个额外的随机数,但我不相信这是最好的方法。
感谢任何建议或建议。
只需用零填充结果即可获得10位数字。此外,您应该使用ulong
来获得10位数字的完整范围。
var buffer = new byte[8]; // 8 bytes for a long
rng.GetBytes(buffer);
ulong result = BitConverter.ToUInt64(buffer, 0); // unsigned to avoid having to use Abs
var token = result.ToString("D10"); // pads the result to 10 digits
token = token.Substring(token.Length - 10); // strip out extra digits, if any