number generation
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,2 +1,4 @@
|
||||
/target
|
||||
*.pdf
|
||||
|
||||
Cargo.lock
|
||||
|
7
Cargo.lock
generated
7
Cargo.lock
generated
@ -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"
|
@ -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);
|
||||
}
|
||||
|
12
src/utils.rs
12
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 {
|
||||
|
Reference in New Issue
Block a user