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
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_size
和 message
的值。
基准测试
该库包含用于评估密码学操作性能的基准测试,包括同态加法和乘法。要运行这些基准测试
- 请确保已安装Rust Nightly工具链。
- 在项目根目录下执行
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