1. 定义生成助记词

助记词句子(mnemonic word sequence)作为密码,使用若干个助记词来替换之前直接生成随机数的方式(确定性钱包的种子随机数)。

1.1. 生成步骤

1) . 生成 128~256 位 (bits) 的随机数,称为熵(以128bits为例);

规定熵的位数必须是 32 的整数倍,所以熵的长度取值位 128 到 256 之间取 32 的整数倍的值,分别为 128, 160, 192, 224, 256;

2) . 计算熵 checksum

将熵进行 SHA256 哈希,取出前 4bits 用作校验码;(校验码长度 = 数据总长度 / 32);

3) . 将原始熵和 checksum 拼接为 132bits 长度
4) . 将 132bits 长度按照 11bits 分割为 12 份
5) . 每 11bits 对应为 2048 长度的单词表中的一个单词;

(助记词库有 2048 个词,用 11 位可全部定位词库中所有的词,作为词的索引)

1.2. 随机位数与助记词个数的对应表

校验和 = 长度为熵的长度/32 位
助记词个数 = (熵+校验和)/11

熵(bits) 校验和(bits) 熵+校验和(bits) 助记词个数
128 4 132 12
160 5 165 15
192 6 198 18
224 7 231 21
256 8 264 24

2. 助记词生成 Master Seed(512 位,64 字节)

BIP39 采用PBKDF2函数推算种子.

  • 哈希函数HMAC-SHA512(key =“mnemonic” , passphrase 作为盐)
  • 2048 作为重复计算的次数

【参考】

[1] HMAC算法可参考"HMAC(2)哈希运算消息认证码HMAC"

比特币钱包(4) BIP39 助记词相关推荐

  1. 以太坊BIP39助记词到公钥地址的原理与细节

    以太坊基础-你真的懂吗 以太坊私钥 eg: fad9c8855b740a0b7ed4c221dbad0f33a83a49cad6b3fe8d5817ac83d38b6a19 由256位:不考虑0x前缀 ...

  2. (一)区块链钱包之生成助记词

    (一)区块链钱包之生成助记词 (二)区块链钱包之创建钱包地址 (三)区块链钱包之加密算法简介 (四)区块链钱包之创建比特离线交易(BTC交易) (五)区块链钱包之创建以太坊交易(ETH交易) 助记词 ...

  3. imToken—钱包如何导出助记词?

    imToken钱包tokenw.me 是现在很受投资者欢迎的一款轻钱包,该钱包不仅使用非常方便,并且还十分的安全.不管是从下载安装角度,还是去中心化的角度,亦或是使用的角度上来说,该钱包都是安全的.i ...

  4. 私钥,公钥,钱包地址,助记词,keyStore的区别

    私钥,公钥,钱包地址,助记词,keyStore的区别 私钥:本质上是一个包含64位的随机数,是随机生成的 公钥:公钥是由私钥经过加密算法后生成的,拥有私钥,可以算出公钥,拥有公钥却不能算出私钥 钱包地 ...

  5. 比特币钱包开发:通过助记词扩展子地址的原理与编码

    [db:标签]标 掌握生成助记词的原理 掌握助记词生成种子的原理 掌握种子生成子秘钥的原理 编程实践:从生成助记词到子地址 前言 为了安全尽量保证比特币地址的公钥未在网络上出现过,这就需要我们每次支付 ...

  6. java助记词反向_GitHub - gangan1345/mnemonic-sdk: Mnemonic bip39 bip32 bip44 生成助记词 私钥...

    mnemonic-sdk Mnemonic bip39 bip32 bip44 支持 BIP39 助记词 支持 BIP32 子私钥 支持 BIP44 多币种管理 Install Gradle: Add ...

  7. 助记词是什么,有什么用?

    玩加密货币的朋友相信对助记词都不陌生,我们在使用钱包之前,会让你备份12个单词,在备份期间不允许截图操作,并且不断强调这12个单词非常重要,最好用物理方式备份,备份时身边不要有任何人. 对于普通用户来 ...

  8. 以太坊---「地址、密码、私钥、助记词、Keystore 」那些事

    想知道更多关于区块链技术知识,请百度[链客区块链技术问答社区] 链客,有问必答!! 国内最好的以太系钱包当属 imToken,在使用钱包时,有几个名词必须深刻理解,不然就有可能造成区块链资产的损失,这 ...

  9. 什么是私约、助记词和密码?

    私钥是由字母和数字组成的64位长度的十六进制字符串.创建钱包后,输入密码即可导出私钥,一个账户只有一个私钥并且不能修改. 通常一个钱包中私钥和公钥是成对出现的,有了私钥,可以通过一定的算法生成公钥,再 ...

最新文章

  1. C#程序 权限不够的解决方案
  2. FAT32转换NTFS格式的命令
  3. signature=89b7a6bcfac55abae5ac369dafee29f4,Capecitabine
  4. 用python画关系网络图-python networkx 包绘制复杂网络关系图的实现
  5. 【学习笔记】14、标准数据类型—字典
  6. 独立开发者分享:游戏本地化的6个建议
  7. 阿里云监控插件安装 | 非阿里云服务器安装指南
  8. ffmpeg参数中文详细解释
  9. java学习(148):三个参数的输入流
  10. python格式化字符串%r_Python语法速查:3.字符串格式化
  11. 【WP主题】仿下载吧全开源无加密wordpress主题模板内含newzhan2.60无授权版本
  12. 三维数组地址计算_C语言进阶之路:数据类型 - 多维数组与指针!我的心中只有学习!...
  13. OSPF的Router-id确定顺序和冲突情况
  14. 算法初阶05:魔方矩阵
  15. 在线考试系统软件测试总结,基于智慧校园平台的在线考试系统应用研究
  16. cat 几行_CAT工具教程与解疑—SDL Trados 2021来了,分享一些简单测评体验
  17. 我了解的软件测试总结
  18. 计算机注册表命令,进入注册表的方法和命令(电脑的注册表怎么打开)
  19. h264 Profile-level-id解析
  20. 俄罗斯FAC认证介绍

热门文章

  1. css动画-animation各个属性详解(通俗易懂)
  2. js怎么把按钮往下移_js 实现单行数据上下移动
  3. 和泰c语言函数库,合泰杯 | 合泰单片机入门 编程详解(二)
  4. 黑龙江省:2025年将建成5G基站11.4万个,15万数据中心机架
  5. 网络工程中的割接是什么意思?
  6. 数据中心液体冷却技术的“机架经济学”
  7. 如何做好配电室、临时用电安全管理?
  8. 三伏天到了,记得为数据中心降降温
  9. mysql mysqlhotcopy_MySQL备份工具之mysqlhotcopy
  10. Dataset之JFT:JFT/FastEval14k数据集的简介、下载、案例应用之详细攻略