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 /target
*.pdf *.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;
mod dghv_asym;
mod utils;
use crate::dghv::{decrypt_bit, encrypt_bit, generate_secret_key}; use crate::dghv::{decrypt_bit, encrypt_bit, generate_secret_key};
fn main() { fn main() {
let eta = 64; let eta = 10000;
let secret_key = generate_secret_key(eta); let secret_key = generate_secret_key(eta);
let bit = 1; 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 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!("clear bit (b): {}", bit);
println!("Secret key (p): {}", secret_key); println!("Secret key (p): {}", secret_key);
println!("Encrypted bit (c): {}", ciphertext); println!("Encrypted bit (c): {}", ciphertext);
println!("decrypted bit : {}", decrypted); println!("decrypted bit : {}", decrypted);
println!("decrypted bit AND 1: {}", decrypted_opx2);
} }

View File

@ -4,9 +4,15 @@ use rand::SeedableRng;
use rug::Integer; use rug::Integer;
pub fn generate_random_odd_integer(num_bits: u32) -> Integer { pub fn generate_random_odd_integer(num_bits: u32) -> Integer {
std::iter::repeat_with(|| generate_random_integer(num_bits)) let mut rng = StdRng::from_os_rng();
.find(|p: &Integer| p.is_odd()) let mut x = Integer::from(1);
.unwrap() 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 { pub fn generate_random_integer(num_bits: u32) -> Integer {