#椭圆曲线 #加密 #公钥 #方案 #x25519 #集成 #ecies

ecies_25519

基于x25519曲线的椭圆曲线集成加密方案

3个版本

0.1.2 2024年2月16日
0.1.1 2024年1月9日
0.1.0 2021年11月25日

#651密码学


c5store 中使用

MPL-2.0LGPL-3.0-only

11KB
177

使用x25519的椭圆曲线集成加密方案

示例用法

use rand_core::{OsRng};
use ecies_25519::{EciesX25519, generate_keypair, parse_openssl_25519_pubkey_der, parse_openssl_25519_privkey_der};

let mut os_rng = OsRng::default();

let recv_kp = generate_keypair(&mut os_rng).unwrap();
let recv_pub_key = parse_openssl_25519_pubkey_der(&recv_kp.public_der).unwrap();
let recv_priv_key = parse_openssl_25519_privkey_der(&recv_kp.private_der).unwrap();

let message = "I 💖🔒";

let ecies_inst = EciesX25519::new();

// Encrypt the message with the public key
let encrypted_data = ecies_inst.encrypt(
   &recv_pub_key, 
   message.as_bytes(), 
   &mut os_rng
).unwrap();

// Decrypt the message with the private key
let decrypted_data_bytes = ecies_inst.decrypt(
  &recv_priv_key,
  &encrypted_data
).unwrap();

println!("Decrypted data is {}", String::from_utf8(decrypted_data_bytes.clone()).unwrap());

依赖项

~6.5MB
~127K SLoC