我想知道是否有可能通过使用它的先前输出来预测将由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);
答案 0 :(得分:0)
不确定是什么内幕,但可能会被其中一个链接覆盖:
如果未涵盖,请提供源代码,我将打破它。
编辑:根据以下评论的要求,我更新了我的答案。
打破它的一个微不足道的方法是对种子进行强力搜索。通常这是一个32位的int(这将需要几分钟的暴力),但在某些平台上它可能是64位(通过暴力破解需要太长时间)。所以你只需循环遍历每个候选种子,做srand(候选种子)然后生成你的rand(1,68703)以查看它是否与输出匹配。如果是这样,你可能拥有正确的种子并可以产生未来的产出。否则继续循环。