The secure Pseudo Random Number Generator PRNG
for PHP.
- Provides a secure
PRNG
: pseudo random number generator (64-Bit support) - OOP facade to PHP core functionality
- High performance (developed using a profiler)
- Lightweight and high-quality codebase (following PSR standards e.g.
PSR-1,2,4
) - Stable, clean + well documented code
- Unit-tested with a good coverage
Generate random number
between 1 and 10 using OPEN_SSL
random bytes (library default):
$generator = new \Clickalicious\Rng\Generator();
$number = $generator->generate(1, 10);
echo $number;
Generate random number
between 1 and 10 using PHP_MERSENNE_TWISTER
random bytes:
$generator = new \Clickalicious\Rng\Generator(\Clickalicious\Rng\Generator::MODE_PHP_MERSENNE_TWISTER);
$number = $generator->generate(1, 10);
echo $number;
Generate 16 random bytes
using MODE_OPEN_SSL
random bytes (library default):
$generator = new \Clickalicious\Rng\Generator();
$bytes = $generator->getRandomBytes(16);
Generate 32 random bytes
using NATIVE-PHP
random bytes:
$generator = new \Clickalicious\Rng\Generator();
$bytes = $generator->getRandomBytes(32);
You can create a visualization of randomization (as you can see below but larger size) through visual.php
» (the file is located in root). As you may see: The first square (light grey) is the default PHP random generated noise which is aligned by a pattern (you will see in the large version of the picture). The following three squares a generated using a more secure generator like Open-SSL for example.
PHP >= 5.6
(compatible up to version7.2
as well asHHVM
)
This library provides a state of the art PRNG
(Pseudo Random Number Generator) implementation to generate secure Pseudo Random Numbers
with PHP. The generation is either based on Open SSL
or MCrypt
or as fallback on PHP's internal functionality. The library also provides a very good Seed generator
on puplic API. If you are interested in the difference between real and pseduo randomness then you could start at https://www.random.org/randomness/.
DILBERT © 2001 Scott Adams.
For a consistent versioning i decided to make use of Semantic Versioning 2.0.0
http://semver.org. Its easy to understand, very common and known from many other software projects.
- No open issues.
If you encounter a (potential) security issue don't hesitate to get in contact with us opensource@clickalicious.de
before releasing it to the public. So i get a chance to prepare and release an update before the issue is getting shared. Thank you!
... yeah. If you're a code monkey too - maybe we can build a force ;) If you would like to participate in either Code, Comments, Documentation, Wiki, Bug-Reports, Unit-Tests, Bug-Fixes, Feedback and/or Critic then please let me know as well!
Thanks to our sponsors and supporters:
JetBrains | Navicat |
---|---|