Rust x25519-dalek 使用问题

289 天前
 dvorakchen1

在使用 DH 算法库:x25519-dalek 的时候,遇到的问题,按照官方文档写下如下代码:

use rand_core::OsRng;
use x25519_dalek::{EphemeralSecret, PublicKey};

fn main() {
    let alice_secret = EphemeralSecret::new(OsRng);
    let alice_public = PublicKey::from(&alice_secret);

    let bob_secret = EphemeralSecret::new(OsRng);
    let bob_public = PublicKey::from(&bob_secret);
}

依赖如下:

rand_core = { version = "0.6.4", features = ["getrandom"] }
x25519-dalek = "1.2.0"

Rust 版本为:rustc 1.71.0 (8ede3aae2 2023-07-12)

报错信息如下:

error[E0277]: the trait bound `OsRng: rand_core::RngCore` is not satisfied
  --> src\main.rs:14:43
   |
14 |     let bob_secret = EphemeralSecret::new(OsRng);
   |                      -------------------- ^^^^^ the trait `rand_core::RngCore` is not implemented for `OsRng`
   |                      |
   |                      required by a bound introduced by this call
   |
   = help: the following other types implement trait `rand_core::RngCore`:
             &'a mut R
             Box<R>
             rand_core::block::BlockRng64<R>
             rand_core::block::BlockRng<R>
             rand_core::os::OsRng
note: required by a bound in `EphemeralSecret::new`

按照错误信息,是 OsRng 没有实现 trait CryptoRng, RngCore。但我看了 rand_core 的源码,是有实现的。

查看了 Git 上的 Issue ,似乎是因为对 rand_core 的版本支持问题,说将在 2.0 版本修复。但我不是很确定。

请问各位如何解决这个错误?如果这个库是用不了,有没有其他的 DH 算法库推荐?

660 次点击
所在节点    Rust
1 条回复
dvorakchen1
288 天前
已知道原因,这个叼玩意儿依赖的 `rand` 版本为 0.7 ,高于它的都不能用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/960573

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX