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

标签 php linux php-extension

我会尝试解释我的问题,即使不是具体的解决方案,但至少理论思想就足够了。

我正在编写随机数生成器 - 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/

相关文章:

c - 如何在 php ext 中的类中创建私有(private)属性作为数组

linux - 如何填写命令行界面?

linux - xargs 杀死 : Failure

linux - Centos中Youtube_dl文件的具体路径

php - 如何在 php 扩展中包装 c++ 类?

php - MySQL SSL远程连接错误: Unable to get Private Key

php - 具有奇数日期 2012-12-10-1 错误的重复日期条目

php - 如何从MySQL数据库获取数据到Android应用程序

php - 将 PHP 结束标记转换为注释

php - PHP 7.1+ Windows readline扩展并非所有功能都存在