correct noise values
This commit is contained in:
16
src/dghv.rs
16
src/dghv.rs
@ -43,28 +43,28 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_encrypt_decrypt_bit() {
|
fn test_encrypt_decrypt_bit() {
|
||||||
let eta = 64;
|
let eta = 10000;
|
||||||
let key = generate_secret_key(eta);
|
let key = generate_secret_key(eta);
|
||||||
|
|
||||||
let bit = 0;
|
let bit = 0;
|
||||||
let ciphertext = encrypt_bit(bit, &key, 128, 61);
|
let ciphertext = encrypt_bit(bit, &key, 100, 100);
|
||||||
let decrypted = decrypt_bit(&ciphertext, &key);
|
let decrypted = decrypt_bit(&ciphertext, &key);
|
||||||
assert_eq!(decrypted, bit);
|
assert_eq!(decrypted, bit);
|
||||||
|
|
||||||
let bit = 1;
|
let bit = 1;
|
||||||
let ciphertext = encrypt_bit(bit, &key, 128, 61);
|
let ciphertext = encrypt_bit(bit, &key, 100, 100);
|
||||||
let decrypted = decrypt_bit(&ciphertext, &key);
|
let decrypted = decrypt_bit(&ciphertext, &key);
|
||||||
assert_eq!(decrypted, bit);
|
assert_eq!(decrypted, bit);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_multiple_encryptions_are_different() {
|
fn test_multiple_encryptions_are_different() {
|
||||||
let eta = 64;
|
let eta = 10000;
|
||||||
let key = generate_secret_key(eta);
|
let key = generate_secret_key(eta);
|
||||||
|
|
||||||
let bit = 1;
|
let bit = 1;
|
||||||
let c1 = encrypt_bit(bit, &key, 128, 61);
|
let c1 = encrypt_bit(bit, &key, 100, 100);
|
||||||
let c2 = encrypt_bit(bit, &key, 128, 61);
|
let c2 = encrypt_bit(bit, &key, 100, 100);
|
||||||
|
|
||||||
assert_ne!(c1, c2);
|
assert_ne!(c1, c2);
|
||||||
assert_eq!(decrypt_bit(&c1, &key), bit);
|
assert_eq!(decrypt_bit(&c1, &key), bit);
|
||||||
@ -77,8 +77,8 @@ mod tests {
|
|||||||
let key = generate_secret_key(eta);
|
let key = generate_secret_key(eta);
|
||||||
|
|
||||||
for &(b1, b2) in &[(0, 0), (0, 1), (1, 0), (1, 1)] {
|
for &(b1, b2) in &[(0, 0), (0, 1), (1, 0), (1, 1)] {
|
||||||
let c1 = encrypt_bit(b1, &key, 4096, 512);
|
let c1 = encrypt_bit(b1, &key, 45, 45);
|
||||||
let c2 = encrypt_bit(b2, &key, 4096, 512);
|
let c2 = encrypt_bit(b2, &key, 45, 45);
|
||||||
|
|
||||||
let sum: Integer = c1.clone() + &c2;
|
let sum: Integer = c1.clone() + &c2;
|
||||||
let product: Integer = c1 * c2;
|
let product: Integer = c1 * c2;
|
||||||
|
@ -69,10 +69,9 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_key_generation_properties() {
|
fn test_key_generation_properties() {
|
||||||
let eta: u32 = 10000;
|
let eta: u32 = 10000;
|
||||||
let gamma: u32 = 11000;
|
|
||||||
let theta: usize = 5;
|
let theta: usize = 5;
|
||||||
let rho: u32 = 16;
|
let rho: u32 = 100;
|
||||||
let (sk, pk) = generate_keys(gamma, eta, rho, theta);
|
let (sk, pk) = generate_keys(rho, eta, rho, theta);
|
||||||
|
|
||||||
assert_eq!(sk.p.significant_bits(), eta);
|
assert_eq!(sk.p.significant_bits(), eta);
|
||||||
assert!(sk.p.is_odd());
|
assert!(sk.p.is_odd());
|
||||||
@ -90,12 +89,11 @@ mod tests {
|
|||||||
use rayon::prelude::*;
|
use rayon::prelude::*;
|
||||||
|
|
||||||
let eta: u32 = 10000;
|
let eta: u32 = 10000;
|
||||||
let gamma: u32 = 11000;
|
|
||||||
let theta: usize = 50;
|
let theta: usize = 50;
|
||||||
let rho: u32 = 128;
|
let rho: u32 = 100;
|
||||||
|
|
||||||
(0..=127).into_par_iter().for_each(|_| {
|
(0..=127).into_par_iter().for_each(|_| {
|
||||||
let (sk, pk) = generate_keys(gamma, eta, rho, theta);
|
let (sk, pk) = generate_keys(rho, eta, rho, theta);
|
||||||
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);
|
||||||
|
@ -5,13 +5,13 @@ 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 = 10000;
|
let eta = 6400;
|
||||||
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, 10000, 512);
|
let ciphertext = encrypt_bit(bit, &secret_key, 80, 80);
|
||||||
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 opx2 = ciphertext.clone() * encrypt_bit(1, &secret_key, 80, 80);
|
||||||
let decrypted_opx2 = decrypt_bit(&opx2, &secret_key);
|
let decrypted_opx2 = decrypt_bit(&opx2, &secret_key);
|
||||||
|
|
||||||
println!("clear bit (b): {}", bit);
|
println!("clear bit (b): {}", bit);
|
||||||
|
Reference in New Issue
Block a user