通过拥有许多输出来预测PHP rand()

时间:2017-02-03 00:17:40

标签: php security random

我想知道是否有可能通过使用它的先前输出来预测将由PHP rand()函数生成的下一个伪随机数。

一个例子是我有n个输出rand(1,10),如8,5,10,3,3,2 ...... 9,8 ......等等。

所以问题是,有什么方法可以使用这些已经生成的数字来预测下一个数字?

修改

由于问题被标记为过于宽泛,我将尝试更具体。在使用rand()函数时,我可以在Linux上运行的PHP上预测下一个RGN或恢复种子,只观察从它给出的一些输出。

一个具体的例子是以下输出:

  

21962

     

10038

     

10425

     

17032

由以下代码生成:

<?php
echo rand(1, 68703);

1 个答案:

答案 0 :(得分:0)

不确定是什么内幕,但可能会被其中一个链接覆盖:

如果未涵盖,请提供源代码,我将打破它。

编辑:根据以下评论的要求,我更新了我的答案。

打破它的一个微不足道的方法是对种子进行强力搜索。通常这是一个32位的int(这将需要几分钟的暴力),但在某些平台上它可能是64位(通过暴力破解需要太长时间)。所以你只需循环遍历每个候选种子,做srand(候选种子)然后生成你的rand(1,68703)以查看它是否与输出匹配。如果是这样,你可能拥有正确的种子并可以产生未来的产出。否则继续循环。