Anklang C++ API 0.0.0
Loading...
Searching...
No Matches
KeccakRng

#include "randomhash.hh"

Inheritance diagram for KeccakRng:
[legend]

Public Types

typedef uint64_tresult_type

Public Member Functions

voidauto_seed ()
size_tbit_capacity () const
voiddiscard (unsigned long long count)
voidforget ()
template<typename RandomAccessIterator >
voidgenerate (RandomAccessIterator begin, RandomAccessIterator end)
KeccakRng (const KeccakRng &)=default
KeccakRng (uint16_t hidden_state_capacity, uint16_t n_rounds)
result_typemax () const
result_typemin () const
size_tn_nums () const
result_typeoperator() ()
uint64_trandom ()
voidseed (const uint64_t *seeds, size_t n_seeds)
template<class SeedSeq >
voidseed (SeedSeq &seed_sequence)
voidseed (uint64_t seed_value=1)
voidxor_seed (const uint64_t *seeds, size_t n_seeds)
~KeccakRng ()

Detailed Description

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.

Member Typedef Documentation

result_type

typedef uint64_t result_type

Integral type of the KeccakRng generator results.

Constructor & Destructor Documentation

KeccakRng() [1/2]

KeccakRng ( const KeccakRng & )
default

~KeccakRng()

~KeccakRng ( )

The destructor resets the generator state to avoid leaving memory trails.

KeccakRng() [2/2]

KeccakRng ( uint16_t hidden_state_capacity,
uint16_t n_rounds
)
explicit

Create an unseeded Keccak PRNG with specific capacity and number of rounds, for experts only.

Member Function Documentation

n_nums()

size_t n_nums ( ) const

Amount of 64 bit random numbers per generated block.

bit_capacity()

size_t bit_capacity ( ) const

Amount of bits used to store hidden random number generator state.

forget()

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.

discard()

void discard ( unsigned long long count)

Discard count consecutive random values. This function is slightly faster than calling operator()() exactly count times.

xor_seed()

void xor_seed ( const uint64_t * seeds,
size_t n_seeds
)

Incorporate seed_values into the current generator state. A block permutation to advance the generator state is carried out per n_nums() seed values. After calling this function, generating the next n_nums() random values will not need to block for a new permutation.

seed() [1/3]

void seed ( uint64_t seed_value = 1)

Reinitialize the generator state using a 64 bit seed_value.

seed() [2/3]

void seed ( const uint64_t * seeds,
size_t n_seeds
)

Reinitialize the generator state using a nuber of 64 bit seeds.

seed() [3/3]

template<class SeedSeq >
void seed ( SeedSeq & seed_sequence)

Seed the generator state from a seed_sequence.

auto_seed()

void auto_seed ( )

Seed the generator from a system specific nondeterministic random source.

random()

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().

operator()()

result_type operator() ( )

Generate uniformly distributed 32 bit pseudo random number.

generate()

template<typename RandomAccessIterator >
void generate ( RandomAccessIterator begin,
RandomAccessIterator end
)

Fill the range [begin, end) with random unsigned integer values.

min()

result_type min ( ) const

Minimum of the result type, for uint64_t that is 0.

max()

result_type max ( ) const

Maximum of the result type, for uint64_t that is 18446744073709551615.