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 關注
- 146 瀏覽
添加回答
舉報