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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (46)

我会尝试解释我的问题,如果不是具体的解决方案,但至少理论上的想法会足够好。

我正在编写随机数生成器--RNG(将仅在Linux(Ubuntu)服务器上运行)并且此代码将被认证(代码/程序随时可以使用sha1 / md5哈希进行检查,并且它具有很多认证版本或其他东西像那样)因此它将无法再进行更改。基本上我使用mt_rand函数来生成值和几个服务器参数以及microtimeseed(mt_srand)。如果代码足够好用于认证,仍然不会,但这不是主要问题。认证公司说我将被要求提供功能的源和二进制代码mt_rand(也许mt_srand也是)。那么如何以最简单正确的方式做到这一点?

找到mt_rand函数php_src_files\ext\standard\rand.c 所以我应该编译这个扩展并加载到安装的PHP作为扩展?

我不是php和linux的新手,但是我想问一下如何做到这一点,所以我不会在不同的Linux服务器上部署这个RNG。

提前致谢。

提问于
用户回答回答于

您将必须提供整个PHP源代码和二进制PHP包(php-cli),可用于生成要根据各种工具检查的二进制流。(您可能会问您的认证提供商他们支持哪种操作系统)。

用户回答回答于

在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);
}

编辑:您不应该使用那些确切的代码,请查看下面的注释。

扫码关注云+社区

领取腾讯云代金券