From f15cd646c6efb323db168680cd85e4b0edae5400 Mon Sep 17 00:00:00 2001 From: Sam Hadow Date: Wed, 30 Apr 2025 15:10:44 +0200 Subject: [PATCH] number generation --- .gitignore | 2 ++ Cargo.lock | 7 ------- src/main.rs | 9 +++++++-- src/utils.rs | 12 +++++++++--- 4 files changed, 18 insertions(+), 12 deletions(-) delete mode 100644 Cargo.lock diff --git a/.gitignore b/.gitignore index 68cae0c..14a49b3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ /target *.pdf + +Cargo.lock diff --git a/Cargo.lock b/Cargo.lock deleted file mode 100644 index 91119fb..0000000 --- a/Cargo.lock +++ /dev/null @@ -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" diff --git a/src/main.rs b/src/main.rs index 4b3584a..1cc597c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -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); } diff --git a/src/utils.rs b/src/utils.rs index 5280bf7..582db77 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -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 {