A random data generator. More...
#include <RandomGenerator.h>
Public Member Functions | |
string | generateAsciiString (unsigned int size) |
Generates a random string of size bytes which is also valid ASCII. |
A random data generator.
Data is generated using /dev/urandom, and is cryptographically secure. Unlike rand() and friends, RandomGenerator does not require seeding.
The reason why RandomGenerator isn't a singleton is because opening /dev/urandom is *very* slow on Mac OS X and OpenBSD. Each object of this class caches the /dev/urandom file handle.
This class is thread-safe as long as there are no concurrent calls to reopen() or close().
string Passenger::RandomGenerator::generateAsciiString | ( | unsigned int | size | ) | [inline] |
Generates a random string of size bytes which is also valid ASCII.
The result consists only of the characters A-Z, a-z and 0-9, and therefore the total number of possibilities given a size of N is 62**N. However not every character has an equal chance of being chosen: a-i have 5/256 chance of being chosen, while other characters have 4/256 chance of being chosen. Therefore, to match the entropy of a random binary string of size N, one should choose a size which yields slightly more possibilities than 2**N.