fix random number generation + asymmetric key generation

This commit is contained in:
2025-04-19 18:52:57 +02:00
parent 09db1579eb
commit 9fa9f4a8bc
3 changed files with 87 additions and 23 deletions

20
src/utils.rs Normal file
View File

@ -0,0 +1,20 @@
use rand::rngs::StdRng;
use rand::Rng;
use rand::SeedableRng;
use rug::Integer;
pub fn generate_random_odd_integer(num_bits: u32) -> Integer {
std::iter::repeat_with(|| generate_random_integer(num_bits))
.find(|p: &Integer| p.is_odd())
.unwrap()
}
pub fn generate_random_integer(num_bits: u32) -> Integer {
let mut rng = StdRng::from_os_rng();
let mut x = Integer::from(1);
for _ in 1..num_bits {
x <<= 1;
x += rng.random_range(0..=1);
}
x
}