Trait rand::CryptoRng

source ·
pub trait CryptoRng: RngCore { }
Expand description

A marker trait used to indicate that an RngCore 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 considered 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.

Implementations on Foreign Types§

source§

impl CryptoRng for ChaCha8Rng

source§

impl CryptoRng for ChaCha12Rng

source§

impl CryptoRng for ChaCha20Rng

source§

impl<'a, R> CryptoRng for &'a mut R
where R: CryptoRng + ?Sized,

source§

impl<R> CryptoRng for Box<R>
where R: CryptoRng + ?Sized,

Implementors§

source§

impl CryptoRng for OsRng

source§

impl CryptoRng for StdRng

source§

impl CryptoRng for ThreadRng

source§

impl<R> CryptoRng for BlockRng64<R>
where R: CryptoBlockRng<Item = u64> + BlockRngCore,

source§

impl<R> CryptoRng for BlockRng<R>
where R: CryptoBlockRng<Item = u32> + BlockRngCore,

source§

impl<R, Rsdr> CryptoRng for ReseedingRng<R, Rsdr>
where R: BlockRngCore<Item = u32> + SeedableRng + CryptoBlockRng, Rsdr: CryptoRng,

Available on crate feature std only.