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 关注
- 237 浏览
添加回答
举报
