使用PHP进行认证的随机数生成器

使用PHP进行认证的随机数生成器,php,linux,php-extension,Php,Linux,Php Extension,我会尽力解释我的问题,如果不是具体的解决办法,但至少理论上的想法就足够了 我正在编写随机数生成器-RNG(将仅在Linux(Ubuntu)服务器上运行),并且该代码将经过认证(随时可以使用sha1/md5哈希检查代码/程序,它必须是认证版本或类似的版本) 因此,它将无法再进行更改。基本上,我使用mt_rand函数生成值和几个服务器参数,并为seed(mt_srand)生成microtime)。仍然不知道代码是否足以进行认证,但这不是主要问题。 认证公司说我需要提供mt_rand函数的源代码和二进

我会尽力解释我的问题,如果不是具体的解决办法,但至少理论上的想法就足够了

我正在编写随机数生成器-RNG(将仅在Linux(Ubuntu)服务器上运行),并且该代码将经过认证(随时可以使用sha1/md5哈希检查代码/程序,它必须是认证版本或类似的版本) 因此,它将无法再进行更改。基本上,我使用
mt_rand
函数生成值和几个服务器参数,并为seed(
mt_srand
)生成
microtime
)。仍然不知道代码是否足以进行认证,但这不是主要问题。 认证公司说我需要提供
mt_rand
函数的源代码和二进制代码(也可能是
mt_srand
)。那么,如何以最简单和正确的方式做到这一点呢

php\u src\u files\ext\standard\rand.c
所以我应该编译这个扩展并作为扩展加载到已安装的PHP

我对php和linux并不陌生,但我想问一下如何正确操作,这样我就不会那么头疼了 在不同的linux服务器上部署此RNG

提前谢谢


更新:感谢您的回复,但正如我所说的,我不是在问如何编写RNG,而是如何提取/编译/准备/使用部分php源代码进行认证…

在Linux上,您可以阅读,它可以从环境噪声中产生高质量的随机位。因此,这可能有助于您:

function dev_random_integer($min, $max)
{
    $stream = fopen('/dev/random', 'r');
    $randomBinary = fread($stream, 4); // read 4 bytes (32 bit)
    fclose($stream);
    $randomInt = unpack('l', $randomBinary); // convert to 32 bit integer

    $range = $max - $min + 1;
    return $min + ($randomInt % $range);
}

编辑:您不应该使用完全相同的代码,请查看下面的注释。

您必须提供完整的PHP源代码和二进制PHP包(
PHP cli
),该包可用于生成二进制流,以便根据各种工具进行检查。(您可以询问您的认证提供商他们支持哪种操作系统)。

虽然这是一个老问题,但似乎是一个相关的问题

我最近建立了一个赌场游戏,并使用它提供加密安全的RNG。这通过了RNG认证测试,我的游戏现在已经通过认证


看看我在上面写的。

你能解释一下你所说的认证是什么意思吗?这个RNG将用于博彩公司生成一些随机值,这需要证明这个RNG确实是随机的。有这样的公司对你的代码进行了大量的测试/统计,如果它通过了,你就可以获得使用RNG的认证。编写好的PRNG-s本身就是一项全职工作(你可以获得一个博士学位,单独研究这个问题)。。。你读过几本关于它们的数学书吗?@BasileStarynkevitch:我认为他在使用PHP函数mt_rand(),它是PHP发行版的一部分,是一个“mersenne twister”,因此被证明是一个“好”的PRNG。我不完全确定我是否理解正在发生的事情,但我相信mt_rand是“好的”。看看我关于“创建一个新的(P)RNG”的评论和工具链接,你可能没有足够的熵来服务所有人requests@ydroneaud说得好。它仍然可以用来提前生成随机数。但这取决于需要随机数的频率——我假设投注公司不需要为每个请求生成随机数。此外,使用模
%
可能是错误的。看看