【发布时间】:2023-03-28 14:06:01
【问题描述】:
我有一个大量使用 mt_rand 和 mt_srand 的应用程序,问题是许多主机提供商默认启用 suhosin.mt_srand.ignore,这导致我的应用程序无法正常工作,因为播种没有不行……
由于我的应用程序已经在一些托管服务器上运行(不启用此扩展),我想在 php 中创建自己的 mt_rand 和 mt_srand 函数,并让它们返回 same 结果(对于相同的种子)作为内置函数,这样我就不会依赖主机提供商是否启用了这个扩展。
我看过 rand.c (http://lxr.php.net/xref/PHP_5_4/ext/standard/rand.c),这是 mt_rand() & mt_srand() 的源代码,但是我对 C 的了解很差,不能自己迁移到 php .
有人知道怎么做吗?还是想帮我解决这个问题?
【问题讨论】:
-
你不应该这样做。好的随机数生成是极其复杂的。但是,如果您坚持,请参阅以下问题:stackoverflow.com/questions/9482290/…
-
我已经看过这个问题了。在我的情况下,缓存和编写不同的随机函数都不会这样做,因为我无法提前知道我的应用程序产生的每个种子是什么,我需要一个产生与 mt_rand 和 mt_srand 完全相同的结果的随机函数生产,以实现向后兼容性。
-
@EdCottrell 提到的问题在任何情况下似乎都没有世界上最伟大的 PRNG。
标签: php c suhosin code-migration