11个版本
0.5.1 | 2021年4月24日 |
---|---|
0.5.0 | 2020年11月23日 |
0.4.1 | 2020年8月23日 |
0.4.0 | 2020年7月6日 |
0.3.0 | 2020年2月27日 |
在加密学分类中排名1884
每月下载量2,555
34KB
574 代码行
ecies-ed25519
使用AES-GCM和HKDF-SHA256在扭曲爱德华斯曲线25519上实现ECIES。
ECIES可用于使用公钥加密数据,这样只有相应私钥的持有者才能解密。
该项目尚未经过安全审计。只有进行安全审计后,才会发布1.0版本。
后端
它使用出色的curve25519-dalek库进行ECC操作,并为HKDF-SHA256 / AES-GCM操作提供两个不同的后端。
-
pure_rust
后端(默认)。它使用SHA2、HKDF、AES和AEAD的纯Rust实现。 -
ring
后端使用ring。它使用基于BoringSSL的稳固原语,但不能在所有平台上运行。例如,它不能在WASM上运行。要激活此后端,请将以下内容添加到您的Cargo.toml文件中ecies-ed25519= {版本= "0.3",功能= ["ring"] }
示例用法
let mut csprng = rand::thread_rng();
let (secret, public) = ecies_ed25519::generate_keypair(&mut csprng);
let message = "I 💖🔒";
// Encrypt the message with the public key such that only the holder of the secret key can decrypt.
let encrypted = ecies_ed25519::encrypt(&public, message.as_bytes(), &mut csprng).unwrap();
// Decrypt the message with the secret key
let decrypted = ecies_ed25519::decrypt(&secret, &encrypted);
serde
支持
提供了serde
功能,用于序列化和反序列化私钥和公钥。
运行测试
您应该在两个后端上运行测试
cargo test --no-default-features --features "ring serde"
cargo test --no-default-features --features "pure_rust serde"
性能
如果使用pure_rust
后端,默认情况下,此crate的依赖项将使用AES和POLYVAL通用哈希函数的软件实现。
当针对现代x86/x86_64 CPU时,使用以下RUSTFLAGS来利用高性能AES-NI和CLMUL CPU内联函数
RUSTFLAGS="-Ctarget-cpu=sandybridge -Ctarget-feature=+aes,+sse2,+sse4.1,+ssse3"
未来计划
-
一旦const-generics得到解决,我将使此crate在AEAD和HKDF实现上通用。
-
添加对AVX2和AVX512的支持
安全审计
该项目尚未经过安全审计。只有进行安全审计后,才会发布1.0版本。如果您想资助或执行安全审计,请与我联系。
虽然这个库尚未经过安全审计,但其中一些依赖项已经经过审计。依赖项审计
依赖项
~2.3–6MB
~138K SLoC