ircmaxell/random-lib

生成安全随机数的库

v1.2.0 2016-09-07 15:52 UTC

This package is auto-updated.

Last update: 2024-09-20 00:43:36 UTC


README

Build Status

这是一个用于生成各种强度随机数和字符串的库。

在安全环境中,此库非常有用。

安装

通过Composer

$ composer require ircmaxell/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 上的 #php.security 频道。

安全漏洞

如果您发现了一个安全问题,请直接联系作者 [email protected]