如何编写我自己的mt_rand()& mt_srand?

时间:2014-02-27 15:39:30

标签: php c suhosin code-migration

我的应用程序大量使用mt_rand& mt_srand,问题是许多主机提供程序默认启用了suhosin.mt_srand.ignore,这会导致我的应用程序无法正常工作,因为播种不起作用...

由于我的应用程序已经在某些托管服务器上运行(不启用此扩展),我想创建自己的mt_rand& mt_srand函数,在php中,让它们返回相同的结果(对于相同的种子)作为内置函数,这样我将不依赖于主机提供程序是否启用了此扩展。

我查看了rand.c(http://lxr.php.net/xref/PHP_5_4/ext/standard/rand.c),这是mt_rand()&的源代码。 mt_srand(),但我对C的了解很差,我不能自己将它迁移到php。

有谁知道怎么做?还是抱怨我呢?

1 个答案:

答案 0 :(得分:0)

您可以尝试使用普通PRNG算法的仅PHP实现,例如https://github.com/ruafozy/php-mersenne-twister

但是,请不要依赖这些数字来加密安全 - 这意味着使用这些数字,例如用于在游戏中生成随机迷宫,但不用于加密您的日记。