gpt4 book ai didi

go - 如何从 PublicKey 生成字节数组

转载 作者:IT王子 更新时间:2023-10-29 01:34:37 27 4
gpt4 key购买 nike

我正在使用 crypto lib ,遇到了一个问题:我需要将 PublicKey 类型转换为 byte[],因为它可以用私钥完成:

privkey.D.Bytes()

我该如何解决这个问题?

最佳答案

ecdsa.PrivateKey是一个结构:

type PrivateKey struct {
PublicKey
D *big.Int
}

因此 privkey.D.Bytes() 返回给您 D 大整数的字节。

同样,ecdsa.PublicKey :

type PublicKey struct {
elliptic.Curve
X, Y *big.Int
}

您可以对 pubkey.Xpubkey.Y 字段执行相同的操作。这些将为您提供 2 个单独的 byte slice 。如果您需要将它们合并为一个,则需要提出某种“格式”,例如使用 4 个字节编码第一个 slice 的长度(pubkey.X.Bytes() 的结果),然后是第一个 slice ,然后是第二个 slice 的长度(同样是 4 个字节),最后第二个 slice 本身。

最好是使用 elliptic.Marshal()为此功能:

func Marshal(curve Curve, x, y *big.Int) []byte

Marshal converts a point into the uncompressed form specified in section 4.3.6 of ANSI X9.62.

使用示例:

var pubkey *ecdsa.PublicKey = // ...

data := elliptic.Marshal(pubkey, pubkey.X, pubkey.Y)

关于go - 如何从 PublicKey 生成字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52502511/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com