# [−][src]Trait rand::CryptoRng

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.

## Implementations on Foreign Types

`impl<'a, R> CryptoRng for &'a mut R where`

R: CryptoRng + ?Sized,

[src]

R: CryptoRng + ?Sized,

`impl<R> CryptoRng for BlockRng<R> where`

R: BlockRngCore + CryptoRng,

[src]

R: BlockRngCore + CryptoRng,

`impl<R> CryptoRng for Box<R> where`

R: CryptoRng + ?Sized,

[src]

R: CryptoRng + ?Sized,

`impl CryptoRng for ChaCha12Rng`

[src]

`impl CryptoRng for ChaCha8Rng`

[src]

`impl CryptoRng for ChaCha20Rng`

[src]

Loading content...
## Implementors

`impl CryptoRng for EntropyRng`

[src]

`impl CryptoRng for OsRng`

[src]

`impl CryptoRng for StdRng`

[src]

`impl CryptoRng for ThreadRng`

[src]

`impl<R, Rsdr> CryptoRng for ReseedingRng<R, Rsdr> where`

R: BlockRngCore + SeedableRng + CryptoRng,

Rsdr: RngCore + CryptoRng,

[src]

R: BlockRngCore + SeedableRng + CryptoRng,

Rsdr: RngCore + CryptoRng,