#同态加密 #加密解密 #加密 #同态 #加密密钥 #Paillier #安全

safe_paillier_rust

Paillier密码系统的一种实现,具有同态属性,利用Rust的类型系统和安全性保证

5个版本

0.1.4 2024年3月5日
0.1.3 2024年3月5日
0.1.2 2024年3月5日
0.1.1 2024年3月5日
0.1.0 2024年3月5日

#1118 in 密码学

每月下载次数 21

MIT 许可证

20KB
192

safe_paillier_rust

概述

safe_paillier_rust 是 Paillier 密码系统的 Rust 实现,Paillier 密码系统是一种公钥密码学中的概率非对称算法,以其同态属性而闻名。这些属性使得对密文的安全计算成为可能,一旦解密,结果就像直接在明文中执行操作一样。

利用 Rust 强大的类型系统和内存安全,这个库旨在提供一种安全高效的加密操作解决方案,尤其是在需要数据隐私和完整性的环境中。

功能

  • 密钥生成:生成用于加密和解密的密钥。
  • 加密和解密:使用公钥进行消息加密,并用相应的私钥进行解密。
  • 同态属性:支持对加密数据的加法和乘法操作,与在明文中执行的操作保持一致。
  • 模运算支持:提供模逆和其他对密码系统至关重要的算术操作的实用工具。

依赖关系

该库依赖于几个 Rust 包进行大整数运算和随机数生成,确保实现稳健高效。

[dependencies]
num-bigint = "0.4"
num-prime = "0.4.3"
rand = "0.8"
num-traits = "0.2"
num-modular = "0.6.1"

安装和使用

将crate添加到您的项目

要将 safe_paillier_rust 添加到您的 Rust 项目中,请将其作为依赖项添加到您的 Cargo.toml 文件中

[dependencies]
safe_paillier_rust = "0.1.4"

请确保使用 crates.io 上可用的 safe_paillier_rust 的最新版本。

示例用法

将 crate 添加到您的项目后,您可以使用它执行加密操作,如密钥生成、加密和解密。以下是一个基本示例,展示了这些功能。

// Import the necessary modules from the crate
use safe_paillier_rust::{keygen::key_gen, encryption::encryption, decryption::decryption};
use num_bigint::BigUint;

fn main() {
    // Generate public and private keys with a specified bit size
    let bit_size = 512;
    let (public_key, private_key) = key_gen(bit_size);

    // Define a message as a BigUint
    let message = BigUint::from(123u32);

    // Encrypt the message using the public key
    let ciphertext = encryption(message.clone(), &public_key);

    // Decrypt the ciphertext using the private key and public key
    let decrypted_message = decryption(ciphertext, &public_key, &private_key);

    // Verify the decryption result matches the original message
    assert_eq!(message, decrypted_message);
    println!("Encryption and decryption successful!");
}

此示例演示了如何将 safe_paillier_rust 集成到您的 Rust 项目中,以执行安全的加密操作。根据您的特定用例替换 bit_sizemessage 的值。

基准测试

该库包含用于评估密码学操作性能的基准测试,包括同态加法和乘法。要运行这些基准测试

  1. 请确保已安装Rust Nightly工具链。
  2. 在项目根目录下执行cargo bench

请参阅项目文档以获取详细的基准测试说明和结果。

文档

为了更深入地了解Paillier密码系统和其同态功能,请参阅Pascal Paillier于1999年发表的原始论文:https://link.springer.com/content/pdf/10.1007%2F3-540-48910-X_16.pdf

贡献

欢迎贡献以增强库的功能或性能。请遵守现有的编码标准,并为新功能包含测试。

许可

本项目在MIT许可证下提供。有关详细信息,请参阅LICENSE文件。

联系

如有疑问或合作需求,请在本项目的GitHub仓库中打开一个问题,或直接联系维护者。

依赖关系

~4MB
~76K SLoC