我会尝试解释我的问题,即使不是具体的解决方案,但至少理论思想就足够了。
我正在编写随机数生成器 - RNG(仅在 Linux (Ubuntu) 服务器上运行)并且此代码将经过认证(代码/程序随时可以使用 sha1/md5 哈希进行检查,并且它必须经过认证版本或类似的东西)
所以它将无法再进行更改。基本上,我使用 mt_rand 函数来生成值和几个服务器参数,并使用 microtime 作为种子 (mt_srand
)。如果代码足够好以进行认证,仍然不要拒绝,但这不是主要问题。
认证公司说我将被要求提供mt_rand
函数的源代码和二进制代码(也许还有mt_srand
)。那么如何以最简单且正确的方式做到这一点呢?
在php_src_files\ext\standard\rand.c中找到mt_rand函数
那么我应该以某种方式编译这个扩展并加载到已安装的 PHP 作为扩展吗?
我对 php 和 linux 并不陌生,但我想问一下如何正确地做,这样我就不会那么头疼了 将此 RNG 部署在不同的 Linux 服务器上。
提前致谢。
更新:感谢您的回复,但正如我所说,我不是在问如何编写 RNG,而是在问如何提取/编译/准备/使用部分 php 源代码进行认证。 ..
最佳答案
在 Linux 上,您可以从 /dev/random
读取内容,它从环境噪声中产生高质量的随机位。所以这可能对你有用:
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 进行认证的随机数生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14521104/