首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从私有ED25519 Go获取公钥

从私有ED25519 Go获取公钥
EN

Stack Overflow用户
提问于 2020-05-13 15:25:42
回答 1查看 2.4K关注 0票数 3

我试图使用ED25519和Go从私钥中提取公钥。

我将私钥字节值传递到我的方法中,从它创建一个新的ed25519私钥结构,然后使用.Public()方法检索公钥。

代码语言:javascript
复制
pk := ed25519.PrivateKey(privateKey).Public()
cpk, ok := pk.(ed25519.PublicKey)
if !ok {
    return nil, errors.New("problem casting public key to ed25519 public key")
}

它不是错误的,但是产生的公钥字节总是空的,我在创建私钥结构时是否做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-13 15:43:52

ed25519包在概述中有以下重要评论:

..。与RFC 8032的格式不同,该包的私钥表示包括一个公钥后缀,以使具有相同密钥的多个签名操作更有效。此包将RFC 8032私钥称为“种子”。

这意味着它使用了以下对等词和术语:

  • RFC 8032私钥:32个字节,在此包中称为“种子”。
  • RFC 8032私钥和公钥串接:64个字节,在此包中称为“私钥

如果您已经有一个由RFC 8032 <private key><public key>组成的64字节片,您可以在您的问题中使用代码。

如果只有由RFC 8032 <private key>组成的32字节片,则需要按以下方式计算公钥:

代码语言:javascript
复制
// Compute the full 64 byte <private key><public key> from the private key
priv := ed25519.NewKeyFromSeed(32bytePrivateKey)

// Print out the public key (the last 32 bytes)
fmt.Println(priv.Public())

请注意ed25519.PrivateKeyed25519.PublicKey都是type []byte

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

https://stackoverflow.com/questions/61778516

复制
相关文章

相似问题

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