A marker trait used to indicate that an [RngCore
] or BlockRngCore
implementation is supposed to be cryptographically secure.
Cryptographically secure generators, also known as CSPRNGs, should
satisfy an additional properties over other generators: given the first
k bits of an algorithm's output
sequence, it should not be possible using polynomial-time algorithms to
predict the next bit with probability significantly greater than 50%.
Some generators may satisfy an additional property, however this is not
required by this trait: if the CSPRNG's state is revealed, it should not be
computationally-feasible to reconstruct output prior to this. Some other
generators allow backwards-computation and are consided reversible.
Note that this trait is provided for guidance only and cannot guarantee
suitability for cryptographic applications. In general it should only be
implemented for well-reviewed code implementing well-regarded algorithms.
Note also that use of a CryptoRng
does not protect against other
weaknesses such as seeding from a weak entropy source or leaking state.