fix asymmetric encryption
This commit is contained in:
@ -1,5 +1,5 @@
|
|||||||
use crate::dghv::{encrypt_bit, generate_secret_key};
|
use crate::dghv::{encrypt_bit, generate_secret_key};
|
||||||
use crate::utils::generate_random_integer;
|
use crate::utils::generate_random_odd_integer;
|
||||||
use rand::rngs::StdRng;
|
use rand::rngs::StdRng;
|
||||||
use rand::Rng;
|
use rand::Rng;
|
||||||
use rand::SeedableRng;
|
use rand::SeedableRng;
|
||||||
@ -49,7 +49,7 @@ pub fn encrypt_bit_asym(m: u8, pk: &PublicKey, rho: u32) -> Integer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// noise
|
// noise
|
||||||
let r = generate_random_integer(rho);
|
let r = generate_random_odd_integer(rho);
|
||||||
let mut c = Integer::from(m);
|
let mut c = Integer::from(m);
|
||||||
c += Integer::from(2) * r;
|
c += Integer::from(2) * r;
|
||||||
c += sum;
|
c += sum;
|
||||||
@ -86,14 +86,16 @@ mod tests {
|
|||||||
fn test_encrypt_decrypt_bit() {
|
fn test_encrypt_decrypt_bit() {
|
||||||
let eta: u32 = 1024;
|
let eta: u32 = 1024;
|
||||||
let gamma: u32 = 2048;
|
let gamma: u32 = 2048;
|
||||||
let theta: usize = 128;
|
let theta: usize = 10;
|
||||||
let rho: u32 = 128;
|
let rho: u32 = 128;
|
||||||
let (sk, pk) = generate_keys(gamma, eta, rho, theta);
|
let (sk, pk) = generate_keys(gamma, eta, rho, theta);
|
||||||
|
|
||||||
|
for _ in 0..=10000 {
|
||||||
for &m in &[0u8, 1u8] {
|
for &m in &[0u8, 1u8] {
|
||||||
let c = encrypt_bit_asym(m, &pk, rho);
|
let c = encrypt_bit_asym(m, &pk, rho);
|
||||||
let m2 = decrypt_bit(&c, &sk.p);
|
let m2 = decrypt_bit(&c, &sk.p);
|
||||||
assert_eq!(m, m2);
|
assert_eq!(m, m2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user