rych / random
PHP 的随机数据生成器
Requires
- php: >=5.3.4
Requires (Dev)
- fabpot/php-cs-fixer: 0.4.*@dev
- phpunit/phpunit: 3.7.*
- satooshi/php-coveralls: dev-master
Suggests
- ext-mcrypt: *
- ext-openssl: *
This package is auto-updated.
Last update: 2024-08-23 10:53:01 UTC
README
此库旨在为 PHP 5.3+ 提供生成加密安全随机数据的简洁接口。
安装
通过 Composer
$ composer require rych/random
用法
此库易于快速启动。将自动选择并配置适用于您的平台的最优随机数据源。
<?php $random = new Rych\Random\Random(); // Generate a 16-byte string of random raw data $randomBytes = $random->getRandomBytes(16); // Get a random integer between 1 and 100 $randomNumber = $random->getRandomInteger(1, 100); // Get a random 8-character string using the // character set A-Za-z0-9./ $randomString = $random->getRandomString(8);
如果您希望以十六进制格式接收随机字节,我们也可以这样做
<?php $encoder = new Rych\Random\Encoder\HexEncoder(); $random = new Rych\Random\Random(); $random->setEncoder($encoder); // Generate a 16-byte string of random raw data, // encoded as a 32-character hex string $randomBytes = $random->getRandomBytes(16);
生成器
此库支持多种 CSPRNG。可以使用生成器工厂类 Rych\Random\Generator\GeneratorFactory
自动发现并选择适用于当前平台的最优选项。
MCrypt (Rych\Random\Generator\MCryptGenerator)
MCrypt 通过 mcrypt_create_iv()
函数提供了对标准操作系统 CSPRNG 的接口。在 Windows 系统上,此函数将使用 Windows CryptoAPI,而其他操作系统将读取 /dev/urandom
。此后端需要启用 PHP 的 MCrypt 扩展。
这是首选的后端,如果可用,将默认选择。
OpenSSL (Rych\Random\Generator\OpenSSLGenerator)
OpenSSL 通过 openssl_random_pseudo_bytes()
函数提供 CSPRNG。支持此后端需要 PHP 的 OpenSSL 扩展可用。由于 PHP OpenSSL 实现中的漏洞,Windows 服务器还需要运行 PHP 版本 >= 5.3.7,否则此函数可能会执行缓慢或甚至挂起。
OpenSSL 后端是次选后端,如果可用,将选择它。
CAPICOM (Rych\Random\Generator\CapicomGenerator)
尽管 Microsoft 已经 弃用了 CAPICOM 接口,但库目前仍支持旧接口。支持需要在启用了 COM 扩展的 Windows 服务器上运行。
请注意,如果可用,MCrypt 后端将使用新的 Windows CryptoAPI 访问 Windows 内置的 CSPRNG。OpenSSL 后端将在 PHP 版本 >= 5.4.0 上做同样的事。
由于 CAPICOM 已弃用,它只能在 Windows 系统上没有 MCrypt 或 OpenSSL 后端的情况下选择。
/dev/urandom (Rych\Random\Generator\URandomGenerator)
此后端支持大多数非 Windows 平台上内置的非阻塞 CSPRNG。支持需要在非 Windows 平台上读取 /dev/urandom。
如果非 Windows 系统上没有 MCrypt 或 OpenSSL 后端,将选择此后端。
George Argyros 的时钟漂移算法 (Rych\Random\Generator\ClockDriftGenerator)
无法使用上述任何后端的系统将使用此一个。它提供纯 PHP 的 CSPRNG,尽管它相当慢。
此后端没有特殊要求,因此总是可用。
测试
$ vendor/bin/phpunit -c phpunit.dist.xml
安全
如果您发现任何与安全相关的问题,请通过电子邮件 rchouinard@gmail.com 反馈,而不是使用问题跟踪器。
许可证
MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件。