gpt4 book ai didi

c# - 如何证明 .NET 类 Random 不适合生成密码?

转载 作者:太空狗 更新时间:2023-10-29 23:47:27 24 4
gpt4 key购买 nike

我经常看到 .NET class Random 用于生成密码。

一方面,this question I asked earlier显示使用 class Random 生成一堆“ secret ”数据会产生相当可预测的数据。另一方面,我目前正在尝试执行准确的预测,并且我的代码在单核上以每天大约 600 万次种子猜测的速度运行——不是非常快,枚举所有可能的种子值将花费将近一年的时间以那个速度。

是否有更清晰、更快速的方法来表明使用 class Random() 中的数据生成的密码比通常预期的要弱得多?

最佳答案

让我这样说吧:选择一个足以满足您要生成的密码数量的随机数生成器。字母大小为 36(数字和仅大写或仅小写字母)时,您只能提取 RNG 内部状态的一小部分。即使您以这种方式生成 40000 个字符,那仍然只有大约 21 位的信息。除了前缀之外,您在另一个问题中的算法仅生成 4 个随机字符。攻击者暴力破解所有可能的密码比暴力破解 RNG 状态更容易,以便找出要生成的下一个密码。

实际上,使用简单的 RNG 生成密码时,您可能犯的最严重的错误就是生成大量密码。如果您只按需生成它们并且始终使用新播种的 RNG,攻击者将很难找出种子和密码。 System.Random 的默认实现采用自系统启动以来耗时(以毫秒为单位)作为种子。祝你好运。

关于c# - 如何证明 .NET 类 Random 不适合生成密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10428059/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com