从 PHP7 开始,PRNG 引入了一个新函数:random_int ( http://php.net/manual/en/function.random-int.php )
PHP 手册中没有与此函数的播种相关的信息,我也无法使用 Google 在线找到与此相关的任何信息。
我可以像使用 PHP srand 或 PHP mt_srand 一样手动设置种子吗?或者我对此没有控制权?或者播种是由操作系统自动安全完成的吗?
我可以像使用 PHP srand 或 PHP mt_srand 一样手动设置种子吗?
没有。
或者我对此没有控制权?
正确(ish - 在 Linux 系统上,您可以使用 RNDADDENTROPY ioctl 来播种随机生成器,整个系统上的几乎所有内容(包括 php)都从中导出其加密安全的随机字节,但您可能不想这样做,并且它需要根)
或者播种是由操作系统自动安全完成的吗?
正确,在 Linux 上由getrandom() api生成(与从 /dev/random 和 /dev/urandom 读取基本相同),在 Windows 上它是使用 BCRYPT_RNG_ALGORITHM 通过 BCryptGenRandom ( ) api生成的,在 OpenBSD 和 FreeBSD 上它使用arc4random_buf() api,其中所有 3 个提供照相安全的随机字节,相关源代码可以在https://github.com/php/php-src/blob/bb6f374048bc0b4203e4fec7fd4e887519f663d6/ext/standard/random.c找到https://github.com/php/php-src/blob/169805777c17892865ae462ae0a0895344a7fd3c/win32/winutil.c