Bytomd 助记词恢复密钥体验指南

简介:

比原项目仓库:

Github地址:https://github.com/Bytom/bytom

Gitee地址:https://gitee.com/BytomBlockchain/bytom

背景知识

Bytom 使用的 密钥类型为基于 ed25519chainkd.XPub

预备

代码修改

首先适当修改代码,添加一些打印输出,使得我们更好的进行验证。 如果只是想看 xpub ,而不关心 xprv(对于验证导入导出助记词功能来说已经够了)的话可以跳过这一步,不必修改源码

bytom/blockchain/pseudohsm/pseudohsm.go 中的

func (h *HSM) createKeyFromMnemonic(alias string, auth string, mnemonic string) (*XPub, error)

添加输出打印 root XPub 对应的 私钥 和 公钥

func (h *HSM) createKeyFromMnemonic(alias string, auth string, mnemonic string) (*XPub, error) {
    // Generate a Bip32 HD wallet for the mnemonic and a user supplied password
    seed := mnem.NewSeed(mnemonic, "")
    xprv, xpub, err := chainkd.NewXKeys(bytes.NewBuffer(seed))
    if err != nil {
        return nil, err
    }
        
    fmt.Println(hex.EncodeToString(xprv[:])) // Add info printing
    fmt.Println(hex.EncodeToString(xpub[:])) // Add info printing

    id := uuid.NewRandom()
    key := &XKey{
        ID:      id,
        KeyType: "bytom_kd",
        XPub:    xpub,
        XPrv:    xprv,
        Alias:   alias,
    }
    file := h.keyStore.JoinPath(keyFileName(key.ID.String()))
    if err := h.keyStore.StoreKey(file, key, auth); err != nil {
        return nil, errors.Wrap(err, "storing keys")
    }

    return &XPub{XPub: xpub, Alias: alias, File: file}, nil
}

工具准备

因为 bytomd 目前 dashboard 钱包图形界面还没有助记词相关功能,我们需要准备工具使用 POST 请求来使用。比如 curl 或者 postman

获取密钥对应助记词

dashboard 目前还没有 从 密钥导出助记词的功能,现有只是在创建密钥时有助记词相应输出信息。可以修改源码在查看密钥时 打印对应助记词。

因为只是测试,这里为了方便,直接查看在创建密钥时返回的助记词。

对 bytomd 发起 post 请求 /create-key

{
  "alias": "create_key_test",
  "password": "createkeytest",
  "language": "en"
}

可以看到 响应中 显示了 xpub 和 助记词

由于修改了源码,添加了打印信息,bytomd 命令行也打印出了相印的 xprv 和 xpub

步骤

如何通过导入助记词恢复密钥呢?

假设目前 已经有一个 xprv

50db5bfe21b08462972eadbce08ec92d078a45fa7a280d175a823f9e457faf447d1f501b69f895b830138fabc6f91e2b3b3c8df26642a34be4af27886b9134dc

对应的 助记词为

pudding
room
business
river
pattern
box
snap
merit
unfold
speak
hat
task

发起 post 请求 /create-key

{
  "alias": "nnemonic_test",
  "password": "nnemonicnnemonic",
  "nnemonic": "pudding room business river pattern box snap merit unfold speak hat task",
  "language": "en"
}

返回相应:

bytomd 输出

可以看到,恢复出来的 xprv 和 我们本来的 xprv 一致,验证成功。

dashaboard 中也能见到我们恢复的 密钥。

相关文章
|
Windows
mathtype7产品激活密钥最新
MathType是强大的数学公式编辑器,MathType公式编辑器可以说是专门为理科生准备的软件,它可以帮助用户快速的在各种文档中插入符号和公式,不论是简单的公式和符号,还是复杂的都可以非常轻松的输入,并且在与office文档结合使用时,表现的非常完美,是非常好的一款软件,与常见的文字处理软件和演示程序配合使用,能够在各种文档中加入复杂的数学公式和符号,可用在编辑数学试卷、书籍、报刊、论文、幻灯演示等方面,是编辑数学资料的得力工具。
40152 0
|
3月前
|
安全 文件存储 iOS开发
告别痕迹:远程桌面连接历史和凭据的清零指南
【8月更文挑战第18天】使用远程桌面后,为保障安全隐私,需清除连接历史及凭据。在Windows中,可通过注册表编辑器删除HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default下的MRU键值来清除历史记录;macOS下则需移步至“~/Library/Application Support/Apple/Remote Desktop”删除“Clients.plist”。清除凭据方面,Windows用户应访问“控制面板”中的“凭据管理器”删除相应条目;macOS用户需利用“钥匙串访问”应用找出并移除相关条目。
815 3
|
4月前
|
存储 数据安全/隐私保护 Python
`zxcvbn`是一个用于密码强度估计的开源库,由Dropbox开发。它基于一系列启发式方法,包括密码字典、常见密码模式、键盘布局等,来评估密码的强度。
`zxcvbn`是一个用于密码强度估计的开源库,由Dropbox开发。它基于一系列启发式方法,包括密码字典、常见密码模式、键盘布局等,来评估密码的强度。
|
4月前
|
算法 安全 数据安全/隐私保护
支付系统---微信支付09------数字签名,现在Bob想要给Pink写一封信,信件的内容不需要加密,怎样能够保证信息的完整性,使用信息完整性的主要手段是摘要算法,散列函数,哈希函数,H称为数据指纹
支付系统---微信支付09------数字签名,现在Bob想要给Pink写一封信,信件的内容不需要加密,怎样能够保证信息的完整性,使用信息完整性的主要手段是摘要算法,散列函数,哈希函数,H称为数据指纹
|
数据安全/隐私保护
一次性密码本-绝对不会被破译的密码
一次性密码本-绝对不会被破译的密码
.net开发支付宝接口,公私钥正确但一直报私钥格式错误排查方案
报错描述 最近有用户测试.net测试,公私钥明明没问题,可是一直报私钥格式错误,如下图所示  报错代码   排查方案 1、检查私钥格式是否是pkcs1格式; 2、检查私钥是否是一行,以及没有空格、换行等; 3、若确定自己生成的公私钥是否匹配; 如何验证公钥正确性测试步骤:https://openclub.
1091 0