生成 10 位数字的安全令牌
我正在研究生成 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 位,我会考虑添加额外的随机数,但我不相信这是最好的方法。
感谢任何意见或建议。
I'm look at algorithms and ways to generating a 10 digit security token. I've tried the following:
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
var buffer = new byte[4];
rng.GetBytes(buffer);
int result = BitConverter.ToInt32(buffer, 0);
var token = Math.Abs(result).ToString();
The problem is RNGCryptoServiceProvider seems to return around 9 to 10 digits. I've consider add an extra random numbers if it contains less than 10 digits however I not convinced this is the best approach.
appreciate any advice or recommendations.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
只需用零填充结果即可得到 10 位数字。另外,您应该使用
ulong
来获取完整的 10 位数字。Just pad the result with zeros to get 10 digits. Also, you should rather use a
ulong
to get the full range of 10 digits.