我正在开发一个密码生成器,它将在网页上运行。
我正在使用.net Random()的内置功能;函数生成随机数。然后使用它们从字符串中选择不同的大写/小写字符和数字。

我想知道的是,使用Random()有多安全?生成密码的功能。请注意,这些密码会在2分钟后失效,并且每个IP地址该页面仅允许生成3次。

最佳答案

System.Random不安全。最大的弱点是,它只有31位的种子来自可预测的源(Environment.TickCount)。因此,知道您创建Random实例的时间的攻击者可能会将可能的密码限制为少数几个。

该算法本身也不安全。通过观察其中的一些,可能可以预测未来的产出。

使用从System.Security.Cryptography.RandomNumberGenerator派生的类(例如RNGCryptoServiceProvider)来生成安全的随机数。

为了生成安全的随机字符串,我建议对How can I generate random 8 character, alphanumeric strings in C#?的答案。请注意,大多数其他答案都不安全。

关于c# - 在ASP.NET/C#中随机函数的安全性如何,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14260107/

10-16 10:02