pub trait RandomMod: Sized + Zero {
// Required method
fn random_mod(rng: &mut impl CryptoRngCore, modulus: &NonZero<Self>) -> Self;
}
Expand description
Modular random number generation support.
Required Methods§
Sourcefn random_mod(rng: &mut impl CryptoRngCore, modulus: &NonZero<Self>) -> Self
fn random_mod(rng: &mut impl CryptoRngCore, modulus: &NonZero<Self>) -> Self
Generate a cryptographically secure random number which is less than
a given modulus
.
This function uses rejection sampling, a method which produces an unbiased distribution of in-range values provided the underlying CSRNG is unbiased, but runs in variable-time.
The variable-time nature of the algorithm should not pose a security issue so long as the underlying random number generator is truly a CSRNG, where previous outputs are unrelated to subsequent outputs and do not reveal information about the RNG’s internal state.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.