【发布时间】:2013-03-18 15:39:55
【问题描述】:
给定由 rand() 生成的一系列数字,我如何预测下一个值?蛮力是不可能的。 我知道 rand() 基本上是一个线性同余生成器,但也会进行位移。我可以用什么理论来破解它?任何提示都将受到欢迎:)
【问题讨论】:
-
我在某处读到(维基百科???)您需要 650 个(?)结果来识别 PRNG 序列以及您在其中的位置。您可能会喜欢维基百科文章"Random number generator attack"。
-
这可能是剧透,但您当然可以从reading the code 开始了解会发生什么...
-
Iirc glibs 对 rand_r() 和别名 rand()/random() 使用简单的 LCG ==> 尝试 rand_r()。
-
如果您与生成序列的系统在同一个系统上,您可以使用 srand() 将最新数字设置为种子,并使用 rand()“预测”下一个数字。
标签: c random generator glibc prediction