paragonie / random-lib
生成安全随机数的库
Requires
- php: >=5.3.2
- ircmaxell/security-lib: ^1.1
- paragonie/random_compat: ^2|~9.99
- paragonie/sodium_compat: ^1|^2
Requires (Dev)
- friendsofphp/php-cs-fixer: ^1.11
- mikey179/vfsstream: ^1.6
- phpunit/phpunit: ^4.8 || >=5.0.0 <5.4
This package is auto-updated.
Last update: 2024-09-21 02:17:51 UTC
README
一个用于生成各种强度随机数和字符串的库。
该库在安全环境中非常有用。
注意:这是一个由 Anthony Ferrara 的
RandomLib
衍生的版本,由 Paragon Initiative Enterprises 维护。
安装
通过 Composer
$ composer require paragonie/random-lib
使用方法
工厂
工厂用于获取不同强度的生成器
$factory = new RandomLib\Factory; $generator = $factory->getGenerator(new SecurityLib\Strength(SecurityLib\Strength::MEDIUM));
工厂可以配置额外的混合器和源,但也可以直接使用来创建中强度和低强度生成器。
提供便捷方法来创建高、中、低强度生成器。示例
$generator = $factory->getMediumStrengthGenerator();
$factory->getLowStrengthGenerator()
便捷方法获取低强度随机数生成器。
低强度应在非加密设置中需要随机字符串的地方使用。它们不足以用作密钥或盐。然而,它们对于一次性使用令牌非常有用。
$factory->getMediumStrengthGenerator()
便捷方法获取中强度随机数生成器。
中强度应用于大多数加密需求。它们足够强大,可以用作密钥和盐。然而,它们生成时需要一些时间和资源,因此不应过度使用。
$factory->getHighStrengthGenerator()
便捷方法获取高强度随机数生成器。
应仅在高强度密钥生成时使用高强度密钥。生成它们非常耗费资源,可能需要几分钟或更长时间,具体取决于请求的大小。
生成器
生成器用于生成随机数和字符串。
示例
// Generate a random string that is 32 bytes in length. $bytes = $generator->generate(32); // Generate a whole number between 5 and 15. $randomInt = $generator->generateInt(5, 15); // Generate a 32 character string that only contains the letters // 'a', 'b', 'c', 'd', 'e', and 'f'. $randomString = $generator->generateString(32, 'abcdef');
$generator->generate($size)
生成指定大小的随机字节字符串。
$generator->generateInt($min = 0, $max = PHP_INT_MAX)
生成给定范围内的随机整数。如果范围 ($max - $min
) 为零,则使用 $max
。
$generator->generateString($length, $characters = '')
生成指定长度的随机字符串。
这使用提供的字符列表来生成新的结果字符串。字符列表应指定为包含每个允许字符的字符串。
如果没有指定字符列表,则使用以下字符列表
0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/
示例
// Give the character list 'abcdef': print $generator->generateString(32, 'abcdef')."\n"; // One would expect to receive output that only contained those // characters: // // adaeabecfbddcdaeedaedfbbcdccccfe // adfbfdbfddadbfcbbefebcacbefafffa // ceeadbcabecbccacdcaabbdccfadbafe // abadcffabdcacdbcbafcaecabafcdbbf // dbdbddacdeaceabfaefcbfafebcacdca
许可证
MIT,请参阅 LICENSE。
社区
如果您有任何问题或想帮忙,请加入我们 irc.freenode.net 上的 #phpc 频道。
安全漏洞
如果您发现了一个安全问题,请直接联系作者 [email protected]。