如何解决如何使用 RustCrypto (ECDSA) 签署文档?
我对 Rust 还很陌生,但我正在尝试构建一个类似于用 Rust 编写的 OpenSSL 的命令行工具。
我正在尝试使用 Rust Crypto 和 ecdsa crate 实现数字签名。我已经有一个散列文件,接下来的步骤如下:
- 生成私钥和公钥
- 用私钥(那将是我的签名)加密哈希值
现在我不确定如何使用 ecdsa crate。如何生成私钥?
解决方法
可以在文档中找到生成私钥的示例 here。它有点隐藏,因为密钥pair 生成特定于所使用的曲线:
use p256::{
ecdsa::{SigningKey,Signature,signature::Signer},};
use rand_core::OsRng; // requires 'getrandom' feature
// Signing
let signing_key = SigningKey::random(&mut OsRng); // Serialize with `::to_bytes()`
请注意,ECDSA 的工作方式与 RSA 略有不同,因此您不要用私钥“加密”散列(实际上,这对 RSA 来说也是一个糟糕的描述)。您会改用签名者,并且消息的散列通常被视为其中的一部分。该示例还展示了如何执行此操作。
文档非常糟糕,似乎 SHA-256 被用作下面的散列,但这不在此页面上。在我发现的源代码中:
impl ecdsa_core::hazmat::DigestPrimitive for NistP256 {
type Digest = sha2::Sha256;
}
所以我希望 Rust 用户确实了解如何设置/取消设置哈希值。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。