#curve25519 #aes-gcm #encryption #ed25519 #ecies #encryption-key

ecies-ed25519

使用AES-GCM和HKDF-SHA256在扭曲爱德华斯曲线25519上实现ECIES

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

Download history 471/week @ 2024-03-13 516/week @ 2024-03-20 392/week @ 2024-03-27 609/week @ 2024-04-03 631/week @ 2024-04-10 575/week @ 2024-04-17 458/week @ 2024-04-24 363/week @ 2024-05-01 696/week @ 2024-05-08 540/week @ 2024-05-15 609/week @ 2024-05-22 808/week @ 2024-05-29 831/week @ 2024-06-05 509/week @ 2024-06-12 587/week @ 2024-06-19 475/week @ 2024-06-26

每月下载量2,555

MIT/Apache

34KB
574 代码行

ecies-ed25519

docs checks codecov

使用AES-GCM和HKDF-SHA256在扭曲爱德华斯曲线25519上实现ECIES。

ECIES可用于使用公钥加密数据,这样只有相应私钥的持有者才能解密。

该项目尚未经过安全审计。只有进行安全审计后,才会发布1.0版本。

后端

它使用出色的curve25519-dalek库进行ECC操作,并为HKDF-SHA256 / AES-GCM操作提供两个不同的后端。

  1. pure_rust后端(默认)。它使用SHA2、HKDF、AES和AEAD的纯Rust实现。

  2. 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"

未来计划

安全审计

该项目尚未经过安全审计。只有进行安全审计后,才会发布1.0版本。如果您想资助或执行安全审计,请与我联系。

虽然这个库尚未经过安全审计,但其中一些依赖项已经经过审计。依赖项审计

依赖项

~2.3–6MB
~138K SLoC