Classes | |
class | r123::Philox2x32_R< ROUNDS > |
class | r123::Philox2x64_R< ROUNDS > |
class | r123::Philox4x32_R< ROUNDS > |
class | r123::Philox4x64_R< ROUNDS > |
Typedefs | |
typedef Philox2x32_R < philox2x32_rounds > | r123::Philox2x32 |
typedef Philox2x64_R < philox2x64_rounds > | r123::Philox2x64 |
typedef Philox4x32_R < philox4x32_rounds > | r123::Philox4x32 |
typedef Philox4x64_R < philox4x64_rounds > | r123::Philox4x64 |
Enumerations | |
enum | { philox2x32_rounds = 10 } |
enum | { philox4x32_rounds = 10 } |
enum | { philox2x64_rounds = 10 } |
enum | { philox4x64_rounds = 10 } |
The PhiloxNxW classes export the member functions, typedefs and operator overloads required by a CBRNG class.
As described in Parallel Random Numbers: As Easy as 1, 2, 3 . The Philox family of counter-based RNGs use integer multiplication, xor and permutation of W-bit words to scramble its N-word input key. Philox is a mnemonic for Product HI LO Xor).
Philox2x32 is equivalent to Philox2x32_R<10>. With 10 rounds, Philox2x32 has a considerable safety margin over the minimum number of rounds with no known statistical flaws, but still has excellent performance.
Philox2x64 is equivalent to Philox2x64_R<10>. With 10 rounds, Philox2x64 has a considerable safety margin over the minimum number of rounds with no known statistical flaws, but still has excellent performance.
Philox4x32 is equivalent to Philox4x32_R<10>. With 10 rounds, Philox4x32 has a considerable safety margin over the minimum number of rounds with no known statistical flaws, but still has excellent performance.
Philox4x64 is equivalent to Philox4x64_R<10>. With 10 rounds, Philox4x64 has a considerable safety margin over the minimum number of rounds with no known statistical flaws, but still has excellent performance.