4 回答

TA贡献1856条经验 获得超5个赞
非常感谢 Wesley 先生,我正在寻找的是这样的东西, https://go.dev/play/p/ws2c_bIc4M5
但我无法按顺序生成密钥(私人和公共)谢谢你的好意

TA贡献1757条经验 获得超8个赞
非常感谢您的回复
我试过了 Public(string(PrivateKey))
程序的响应
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x10 pc=0x4b47f9]
goroutine 1 [running]:
math/big.(*Int).Bytes(...)
/usr/local/go/src/math/big/int.go:453
main.Public({0xc00001e1a0, 0x20})
/root/Desktop/tuttogoprova/adressgoprova.go:17 +0x99
main.main()
/root/Desktop/tuttogoprova/adressgoprova.go:37 +0xd3
exit status 2

TA贡献1784条经验 获得超2个赞
您定义PrivateKey
为字节片:
PrivateKey := make([]byte, 32)
该函数Public
被定义为将字符串作为其参数:
func Public(PrivateKey string) (publicKey string) {...}
因此Public(PrivateKey)
无法工作,因为privateKey
类型错误。
我不太确定代码试图做什么,但也许Public(string(PrivateKey))
是你需要的?

TA贡献1805条经验 获得超10个赞
正如jochen 的回答所述,您需要先将PrivateKey
字节切片转换为字符串,然后再将其发送给Public
函数。
一旦完成,就会发生指针取消引用错误,因为您为私有构建的字符串不是有效的bigint
.
我通过复制count.String()
到PrivateKey
而不是count.Bytes()
有关存储密钥对的更好方法,请参阅此答案。
这是一些演示所有这些的工作代码。它确实需要cgo
,因为原始代码使用它,所以它不会在操场上运行。
- 4 回答
- 0 关注
- 157 浏览
添加回答
举报