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 中也能见到我们恢复的 密钥。

相关文章
|
2月前
|
数据安全/隐私保护
【产品上新】接口加签优化升级,密钥配置也能如此简单?
【产品上新】接口加签优化升级,密钥配置也能如此简单?
17 0
|
算法 应用服务中间件 Go
国密算法证书及CFCA操作流程
国密算法证书及CFCA操作流程
2874 0
|
弹性计算 网络安全 数据安全/隐私保护
加密服务购买流程|学习笔记
快速学习加密服务购买流程
88 0
Easyrecovery最新激活密钥能使用多久,easyrecovery 2022怎么使用
Easyrecovery注册码使用期限是多久?一般来说,easyrecovery为一机一码制软件,一个注册码激活后可以使用一年,在这期间,任何数据恢复上的问题都能迎刃而解。
529 0
 Easyrecovery最新激活密钥能使用多久,easyrecovery 2022怎么使用
|
存储 弹性计算 安全
谈AK管理之进阶篇 - 如何有效控制云上[最后一把密钥]的风险?
上一期“谈AK管理之基础篇”,我们讲了如何规范的进行访问密钥生命周期管理。通过分出不同权限的阿里云RAM子账号,将不同的权限分给不同的用户,这样一旦子账号泄露也不会造成全局的信息泄露。但是,由于子账号在一般情况下是长期有效的,因此,子用户的访问密钥也是不能泄露的。
谈AK管理之进阶篇 - 如何有效控制云上[最后一把密钥]的风险?
|
Java 物联网 数据安全/隐私保护
物联网平台JAVA实现X509证书加密设备上线
官方文档示例:https://help.aliyun.com/document_detail/148843.html?spm=5176.11065259.1996646101.searchclickresult.173e10b7Qmv2Y9
431 0
物联网平台JAVA实现X509证书加密设备上线
密钥生成工具功能详解
说明:  本帖主要是为大家说明一下密钥生成工具的功能的使用方法,以及如何使用工具来处理集成中遇到的一些问题工具下载地址:【点击下载】一、生成密钥的功能 使工具生成密钥需要注意以下几点:   1、密钥生成工具生成密钥可以生成RSA密钥和RSA2密钥,如果是生成RSA密钥 密钥长度就需要选择1024长度的,如果是生成RSA2也就是RSA(256)密钥,那就需要选择2048长度的。
2519 0