3个版本 (重大更新)
0.3.0 | 2020年5月12日 |
---|---|
0.2.0 | 2020年5月11日 |
0.1.0 | 2020年5月9日 |
#2307 in 密码学
15KB
241 行
ristretto255-dh
使用纯Rust实现的基于Ristretto255群的Diffie-Hellman密钥交换。
此crate提供了一组高级API,用于在Ristretto255素性阶群中进行静态和临时的Diffie-Hellman密钥交换,具体实现了IETF草案,并在内部使用curve25519-dalek库在Curve25519上实现。
示例
use rand_core::OsRng;
use ristretto255_dh::EphemeralSecret;
use ristretto255_dh::PublicKey;
// Alice's side
let alice_secret = EphemeralSecret::new(&mut OsRng);
let alice_public = PublicKey::from(&alice_secret);
// Bob's side
let bob_secret = EphemeralSecret::new(&mut OsRng);
let bob_public = PublicKey::from(&bob_secret);
// Alice again
let alice_shared_secret = alice_secret.diffie_hellman(&bob_public);
// Bob again
let bob_shared_secret = bob_secret.diffie_hellman(&alice_public);
// Each peer's computed shared secret should be the same.
assert_eq!(<[u8; 32]>::from(alice_shared_secret), <[u8; 32]>::from(bob_shared_secret));
关于
高级Diffie-Hellman API受到x25519-dalek的启发。
依赖项
~2.5MB
~60K SLoC