number generation

This commit is contained in:
2025-04-30 15:10:44 +02:00
parent 9fa9f4a8bc
commit f15cd646c6
4 changed files with 18 additions and 12 deletions

2
.gitignore vendored
View File

@ -1,2 +1,4 @@
/target
*.pdf
Cargo.lock

7
Cargo.lock generated
View File

@ -1,7 +0,0 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "homomorphic-encryption"
version = "0.1.0"

View File

@ -1,16 +1,21 @@
mod dghv;
mod dghv_asym;
mod utils;
use crate::dghv::{decrypt_bit, encrypt_bit, generate_secret_key};
fn main() {
let eta = 64;
let eta = 10000;
let secret_key = generate_secret_key(eta);
let bit = 1;
let ciphertext = encrypt_bit(bit, &secret_key);
let ciphertext = encrypt_bit(bit, &secret_key, 10000, 512);
let decrypted = decrypt_bit(&ciphertext, &secret_key);
let opx2 = ciphertext.clone() * encrypt_bit(1, &secret_key, 10000, 512);
let decrypted_opx2 = decrypt_bit(&opx2, &secret_key);
println!("clear bit (b): {}", bit);
println!("Secret key (p): {}", secret_key);
println!("Encrypted bit (c): {}", ciphertext);
println!("decrypted bit : {}", decrypted);
println!("decrypted bit AND 1: {}", decrypted_opx2);
}

View File

@ -4,9 +4,15 @@ 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()
let mut rng = StdRng::from_os_rng();
let mut x = Integer::from(1);
for _ in 1..(num_bits-1) {
x <<= 1;
x += rng.random_range(0..=1);
}
x <<= 1;
x += 1;
x
}
pub fn generate_random_integer(num_bits: u32) -> Integer {