首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用锈蚀-Secp256k1从私钥生成Ethereum公钥?

如何使用锈蚀-Secp256k1从私钥生成Ethereum公钥?
EN

Stack Overflow用户
提问于 2018-12-10 18:40:01
回答 2查看 1.8K关注 0票数 0

我找到了锈病-Secp256k1,这似乎是我所需要的,但是文档中没有示例。

我试图在代码中使用这个板条箱:

代码语言:javascript
复制
extern crate secp256k1;

use secp256k1::key::SecretKey;

fn main() {
    let context = secp256k1::Secp256k1::without_caps();

    let private_key: String = String::from("d500266f7d37f0957564e4ce1a1dcc8bb3408383634774a2f4a94a35f4bc53e0");

    let secret_key = SecretKey::new(&context, &mut private_key);

    println!("{:?}", secret_key);
}

我有个错误:

代码语言:javascript
复制
error[E0277]: the trait bound `std::string::String: secp256k1::rand::Rng` is not satisfied
  --> src/main.rs:10:22
   |
10 |     let secret_key = SecretKey::new(&context, &mut private_key);
   |                      ^^^^^^^^^^^^^^ the trait `secp256k1::rand::Rng` is not implemented for `std::string::String`
   |
   = note: required by `secp256k1::key::SecretKey::new`
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-10 20:21:11

以下代码从私钥生成公钥:

代码语言:javascript
复制
extern crate secp256k1;
extern crate hex;

use secp256k1::key::{SecretKey, PublicKey};

fn main() {
    let context = secp256k1::Secp256k1::new();

    let private_key: &[u8] = "d500266f7d37f0957564e4ce1a1dcc8bb3408383634774a2f4a94a35f4bc53e0".as_bytes();

    let secret_key = SecretKey::from_slice(&hex::decode(private_key).unwrap());

    let public_key = PublicKey::from_secret_key(&context, &secret_key.unwrap());

    println!("{:?}", public_key.unwrap()); // PublicKey(a423c05d32e3385bb2930e42ebbf104567215761e166c3ae3dd91d9c8bee0adcfc4f9e4ec43998eae8000de6b166014c5921c6d4545675f4f9205e7bc3d4401e)
}

我需要使用SecretKey::new,而不是使用期望随机数生成器作为第二个参数的SecretKey::from_slicefrom_slice接受一个32字节的密钥,我可以将它转换成一个兼容的字节片.

票数 2
EN

Stack Overflow用户

发布于 2021-03-15 08:14:19

只是在被接受的答案中添加:

在最后一行中打印的公钥不是未压缩公钥的正确形式。要显示这一点,需要使用公钥上的serialize_uncompressed机箱中的secp256k1方法,并删除前面的04十六进制。

有关不正确的格式这里的详细信息。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53711729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档