[−][src]Struct rand::chacha::ChaChaRng
A random number generator that uses the ChaCha20 algorithm [1].
The ChaCha algorithm is widely accepted as suitable for
cryptographic purposes, but this implementation has not been
verified as such. Prefer a generator like OsRng
that defers to
the operating system for cases that need high security.
[1]: D. J. Bernstein, ChaCha, a variant of Salsa20
Methods
impl ChaChaRng
[src]
pub fn new_unseeded() -> ChaChaRng
[src]
Create an ChaCha random number generator using the default fixed key of 8 zero words.
Examples
use rand::{Rng, ChaChaRng}; let mut ra = ChaChaRng::new_unseeded(); println!("{:?}", ra.next_u32()); println!("{:?}", ra.next_u32());
Since this equivalent to a RNG with a fixed seed, repeated executions of an unseeded RNG will produce the same result. This code sample will consistently produce:
- 2917185654
- 2419978656
pub fn set_counter(&mut self, counter_low: u64, counter_high: u64)
[src]
Sets the internal 128-bit ChaCha counter to a user-provided value. This permits jumping arbitrarily ahead (or backwards) in the pseudorandom stream.
Since the nonce words are used to extend the counter to 128 bits,
users wishing to obtain the conventional ChaCha pseudorandom stream
associated with a particular nonce can call this function with
arguments 0, desired_nonce
.
Examples
use rand::{Rng, ChaChaRng}; let mut ra = ChaChaRng::new_unseeded(); ra.set_counter(0u64, 1234567890u64); println!("{:?}", ra.next_u32()); println!("{:?}", ra.next_u32());
Trait Implementations
impl Rand for ChaChaRng
[src]
impl Rng for ChaChaRng
[src]
fn next_u32(&mut self) -> u32
[src]
fn next_u64(&mut self) -> u64
[src]
fn next_f32(&mut self) -> f32
[src]
fn next_f64(&mut self) -> f64
[src]
fn fill_bytes(&mut self, dest: &mut [u8])
[src]
fn gen<T: Rand>(&mut self) -> T where
Self: Sized,
[src]
Self: Sized,
ⓘImportant traits for Generator<'a, T, R>fn gen_iter<'a, T: Rand>(&'a mut self) -> Generator<'a, T, Self> where
Self: Sized,
[src]
Self: Sized,
fn gen_range<T: PartialOrd + SampleRange>(&mut self, low: T, high: T) -> T where
Self: Sized,
[src]
Self: Sized,
fn gen_weighted_bool(&mut self, n: u32) -> bool where
Self: Sized,
[src]
Self: Sized,
ⓘImportant traits for AsciiGenerator<'a, R>fn gen_ascii_chars<'a>(&'a mut self) -> AsciiGenerator<'a, Self> where
Self: Sized,
[src]
Self: Sized,
fn choose<'a, T>(&mut self, values: &'a [T]) -> Option<&'a T> where
Self: Sized,
[src]
Self: Sized,
fn choose_mut<'a, T>(&mut self, values: &'a mut [T]) -> Option<&'a mut T> where
Self: Sized,
[src]
Self: Sized,
fn shuffle<T>(&mut self, values: &mut [T]) where
Self: Sized,
[src]
Self: Sized,
impl<'a> SeedableRng<&'a [u32]> for ChaChaRng
[src]
fn reseed(&mut self, seed: &'a [u32])
[src]
fn from_seed(seed: &'a [u32]) -> ChaChaRng
[src]
Create a ChaCha generator from a seed, obtained from a variable-length u32 array. Only up to 8 words are used; if less than 8 words are used, the remaining are set to zero.
impl Clone for ChaChaRng
[src]
impl Copy for ChaChaRng
[src]
impl Debug for ChaChaRng
[src]
Auto Trait Implementations
impl Send for ChaChaRng
impl Unpin for ChaChaRng
impl Sync for ChaChaRng
impl UnwindSafe for ChaChaRng
impl RefUnwindSafe for ChaChaRng
Blanket Implementations
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> From<T> for T
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,