首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么同一组字节编码的base58是不同的?

为什么同一组字节编码的base58是不同的?
EN

Ethereum用户
提问于 2023-04-15 20:40:02
回答 1查看 18关注 0票数 2

我想要基于bip32种子生成一个bip39私有根键。我找到了一篇带有python代码的文章,将其复制到自己手中,并执行它,获得了一个有效的私有根密钥(选中了这里)。然后我在golang上写了一个类似的脚本,将python示例中的种子插入其中,执行之后,我得到了错误的根键。这组字节随后由base58编码以获得根键,它们在两个脚本中重合,但是base58编码的结果是不同的。

Python示例:

代码语言:javascript
复制
...
print(all_bytes.hex())
root_key = base58.b58encode_check(all_bytes).decode('utf8')
print(root_key)

Python输出:

代码语言:javascript
复制
0488ade400000000000000000060499f801b896d83179a4374aeb7822aaeaceaa0db1f85ee3e904c4defbd9689004b03d6fc340455b363f51020ad3ecca4f0850280cf436c70c727923f6db46c3e
xprv9s21ZrQH143K31xYSDQpPDxsXRTUcvj2iNHm5NUtrGiGG5e2DtALGdso3pGz6ssrdK4PFmM8NSpSBHNqPqm55Qn3LqFtT2emdEXVYsCzC2U

Golang示例:

代码语言:javascript
复制
fmt.Println(hex.EncodeToString(buffer.Bytes()))
rootKey := base58.CheckEncode(buffer.Bytes(), 0)
fmt.Println(rootKey)

Golang产量:

代码语言:javascript
复制
0488ade400000000000000000060499f801b896d83179a4374aeb7822aaeaceaa0db1f85ee3e904c4defbd9689004b03d6fc340455b363f51020ad3ecca4f0850280cf436c70c727923f6db46c3e
1xprv9s21ZrQH143K31xYSDQpPDxsXRTUcvj2iNHm5NUtrGiGG5e2DtALGdso3pGz6ssrdK4PFmM8NSpSBHNqPqm55Qn3LqFtT2emdEXVYsUrGUX

正如您所看到的,用于编码的字节在这里和那里是相同的,但是结果是不同的。我尝试使用另一个golang模块生成一个base58字符串,但是它为这个种子生成了一个错误:/可能有人遇到了类似的情况,并且知道如何在golang中生成正确的base58字符串。

EN

回答 1

Ethereum用户

发布于 2023-04-15 22:36:23

您的问题可能来自于base58.CheckEncode函数,请尝试使用像这个github.com/btcsuite/btcutil/base58这样的不同的Golang库,下面是如何在代码中使用它

代码语言:javascript
复制
package main

import (
    "bytes"
    "encoding/hex"
    "fmt"

    "github.com/btcsuite/btcutil/base58"
)

func main() {
    allBytes := []byte{...} // Your bytes here

    fmt.Println(hex.EncodeToString(allBytes))
    rootKey := base58.Encode(allBytes)
    fmt.Println(rootKey)
}
票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/149014

复制
相关文章

相似问题

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