#include "randomhash.hh"
Public Types | |
typedef uint64_t | result_type |
Public Member Functions | |
void | auto_seed () |
size_t | bit_capacity () const |
void | discard (unsigned long long count) |
void | forget () |
template<typename RandomAccessIterator > | |
void | generate (RandomAccessIterator begin, RandomAccessIterator end) |
KeccakRng (const KeccakRng &)=default | |
KeccakRng (uint16_t hidden_state_capacity, uint16_t n_rounds) | |
result_type | max () const |
result_type | min () const |
size_t | n_nums () const |
result_type | operator() () |
uint64_t | random () |
void | seed (const uint64_t *seeds, size_t n_seeds) |
template<class SeedSeq > | |
void | seed (SeedSeq &seed_sequence) |
void | seed (uint64_t seed_value=1) |
void | xor_seed (const uint64_t *seeds, size_t n_seeds) |
~KeccakRng () | |
KeccakRng - A KeccakF1600 based pseudo-random number generator. The permutation steps are derived from the Keccak specification [Keccak11] . For further details about this implementation, see also: http://testbit.eu/ This class is primarily used to implement more fine tuned generators, such as: KeccakCryptoRng, KeccakGoodRng and KeccakFastRng.
typedef uint64_t result_type |
Integral type of the KeccakRng generator results.
~KeccakRng | ( | ) |
The destructor resets the generator state to avoid leaving memory trails.
|
explicit |
Create an unseeded Keccak PRNG with specific capacity and number of rounds, for experts only.
size_t n_nums | ( | ) | const |
Amount of 64 bit random numbers per generated block.
size_t bit_capacity | ( | ) | const |
Amount of bits used to store hidden random number generator state.
void forget | ( | ) |
Discard 2^256 bits of the current generator state. This makes it practically infeasible to guess previous generator states or deduce generated values from the past. Use this for forward security [Security03] of generated security tokens like session keys.
void discard | ( | unsigned long long | count | ) |
Discard count consecutive random values. This function is slightly faster than calling operator()() exactly count times.
void xor_seed | ( | const uint64_t * | seeds, |
size_t | n_seeds | ||
) |
void seed | ( | uint64_t | seed_value = 1 | ) |
Reinitialize the generator state using a 64 bit seed_value.
void seed | ( | const uint64_t * | seeds, |
size_t | n_seeds | ||
) |
Reinitialize the generator state using a nuber of 64 bit seeds.
void seed | ( | SeedSeq & | seed_sequence | ) |
Seed the generator state from a seed_sequence.
void auto_seed | ( | ) |
Seed the generator from a system specific nondeterministic random source.
uint64_t random | ( | ) |
Generate uniformly distributed 64 bit pseudo random number. A new block permutation is carried out every n_nums() calls, see also xor_seed().
result_type operator() | ( | ) |
Generate uniformly distributed 32 bit pseudo random number.
void generate | ( | RandomAccessIterator | begin, |
RandomAccessIterator | end | ||
) |
Fill the range [begin, end) with random unsigned integer values.
result_type min | ( | ) | const |
Minimum of the result type, for uint64_t that is 0.
result_type max | ( | ) | const |
Maximum of the result type, for uint64_t that is 18446744073709551615.