助记词(Mnemonics)生成种子,以及Public Key, Private key
2019独角兽企业重金招聘Python工程师标准>>>
HD钱包其实就是管理一堆的Seed以及密钥。记住32byte的私钥是个反人性的事。所以,就有了助记词(Mnemonics)。本文讨论由助记词(Mnemonics)生成种子, and vice versa.
首先,借用Mastering Bitcoin书里的几张图,说明一下HD钱包
下面是变换框图
图片借用到此为止,下面是捋代码
如何生成初始的熵(entropy)
func NewEntropy(bitSize int) ([]byte, error) {err := validateEntropyBitSize(bitSize)if err != nil {return nil, err}entropy := make([]byte, bitSize/8)_, err = rand.Read(entropy)return entropy, err
}
validateEntropyBitsize : bitSize只能是128,256,512。一定是8的倍数
如何生成checksum
func addChecksum(data []byte) []byte {// Get first byte of sha256hasher := sha256.New()hasher.Write(data)hash := hasher.Sum(nil)firstChecksumByte := hash[0]// len() is in bytes so we divide by 4checksumBitLength := uint(len(data) / 4)// For each bit of check sum we want we shift the data one the left// and then set the (new) right most bit equal to checksum bit at that index// staring from the leftdataBigInt := new(big.Int).SetBytes(data)for i := uint(0); i < checksumBitLength; i++ {// Bitshift 1 leftdataBigInt.Mul(dataBigInt, bigTwo)// Set rightmost bit if leftmost checksum bit is setif uint8(firstChecksumByte&(1<<(7-i))) > 0 {dataBigInt.Or(dataBigInt, bigOne)}}return dataBigInt.Bytes()
}
剩下把bits分成12个segment,然后查字典,就不用说了吧
字典在此
测试向量在此
在此处验证
转载于:https://my.oschina.net/gavinzheng731/blog/1847838
助记词(Mnemonics)生成种子,以及Public Key, Private key相关推荐
- java助记词_JAVA生成BTC地址以及私钥,公钥和助记词
JAVA生成BTC地址以及私钥,公钥和助记词 有用的话,回来给我点个赞,谢谢了.有问题留言,我会尽快回复. maven依赖 org.bitcoinj bitcoinj-core 0.14.7 上代码 ...
- 钱包原理——助记词与公私钥
目前钱包分为两种: 一种是非确定性(随机)的钱包,就是随机生成多个私钥,钱包管理这些私钥.如果需要成千上万的地址,通过随机的方式来生成私钥,这就需要存储那么多无规律的私钥,这样就很麻烦不好管理. 另一 ...
- java助记词反向_GitHub - gangan1345/mnemonic-sdk: Mnemonic bip39 bip32 bip44 生成助记词 私钥...
mnemonic-sdk Mnemonic bip39 bip32 bip44 支持 BIP39 助记词 支持 BIP32 子私钥 支持 BIP44 多币种管理 Install Gradle: Add ...
- 1.16. BIP39协议:使用助记词生成确定性钱包
以太坊系统学习教程: https://www.netkiller.cn/blockchain/bip39.html 1.16. BIP39协议:使用助记词生成确定性钱包 BIP:39 层:应用层 标题 ...
- bip39:使用bip39生成助记词
助记词 从HD钱包的创建方式可知,要创建一个HD钱包,我们必须首先有一个确定的512bit(64字节)的随机数种子. 如果用电脑生成一个64字节的随机数作为种子当然是可以的,但是恐怕谁也记不住. 如果 ...
- 第17篇 账户管理(助记词)
本文环境: 操作系统:windows 64: node版本:v10.14.0: 参考文档:https://github.com/guoshijiang/blockchain-wallet/tree/m ...
- php实现助记词转TRX,ETH 私钥和钱包地址
TRX助记词转地址网上都是Java,js或其他语言开发的示例,一个简单的功能需要依赖其他环境来实现表示不能忍,毕竟php是世界上最好的语言.[狗头] 一.知识准备 要实现助记词转TRX私钥和地址,先需 ...
- 助记词是什么,有什么用?
玩加密货币的朋友相信对助记词都不陌生,我们在使用钱包之前,会让你备份12个单词,在备份期间不允许截图操作,并且不断强调这12个单词非常重要,最好用物理方式备份,备份时身边不要有任何人. 对于普通用户来 ...
- MOAC区块链助记词
1.什么是助记词 拥有数字货币资产的人都知道,私钥的备份是非常重要的,有私钥就拥有该私钥对应账户上的所有资产.一般来说私钥都有 256 位,以 64 个字母数字构成的 16 进制字符串表示.直接抄录这 ...
- web3通过助记词获取所有关联的账号:公钥、私钥、地址
1. 业务逻辑 需要使用bip39协议将助记词转换成种子,再通过ethereumjs-wallet库生成hd钱包,根据路径的不同从hd钱包中获取不同的keypair,keypair中就包含有公钥.私钥 ...
最新文章
- 万字讲解API网关的来龙去脉
- 【Redis】新浪微博与微信Redis架构实战 - 笔记
- HTML5 新元素标签系列:最简版 HTML5
- c++ 虚函数的实现机制
- MATLAB使用imshow之后plot的坐标原点在左上角!
- 2017.9.27 青蛙的约会 失败总结
- centos6+ 将程序 注册到 service进行启动 停止 重启等:以nginx为例,添加nginx脚本
- jsp 页面刷新,EasyUI刷新、加载
- html5 json.stringify,JSON.stringify()妙用
- 绘制qq群的基础用例图_首次绘制出“氟化氢”地图:间接实现追踪宇宙中最常见的分子氢!...
- P2123皇后游戏+P1080国王游戏
- entity、bo、vo、po、dto、pojo如何理解及相互转化
- python编辑器windows_【python】windows下好用的的python编辑器 pyScripter
- java去掉转义字符,双引号,全角空格
- Android平台以WebView方式集成H5+SDK和支付宝登录授权插件开发思路总结
- 手动标记用例状态_别再用「六个点」当省略号了,这些标点都有更规范的输入方式...
- 基于微信小程序的同城家政服务小程序
- 《自然语言处理实战入门》第三章 :中文分词原理及相关组件简介---- 汉语分词领域主要分词算法、组件、服务(下)
- android 画图 平面图,房屋平面图 DIY 神工具!「MagicPlan」用手机拍照就自动帮你画好(iPhone, Android)...
- 5码默认版块_短说社区论坛系统版块权限功能