查看: 620|回复: 0

[供应] 私钥注册去中心化钱包开发

[复制链接]
发表于 2020-12-12 21:35:27 | 显示全部楼层 |阅读模式
种子生成子秘钥 种子通过不可逆HMAC-SHA512算法推算出512位的哈希串,前256位是主私钥Master Private Key (m),后256位是主链码Master Chain Code(c)。 给定父扩展私钥和索引i,可以计算相应的子扩展私钥。 函数CKDpriv((kpar,cpar),i)→(ki,ci) 如果i ≥ 2^31(硬化的子密钥):让I= HMAC-SHA512(Key = cpar,Data = 0x00 || ser256(kpar)|| ser32(i))。 (注意:0x00将私钥补齐到33字节长。) 如果i<2^31(普通的子密钥):让I= HMAC-SHA512(Key = cpar,Data = serP(point(kpar))|| ser32(i))。 给定父扩展公钥和索引i,可以计算相应的子扩展公钥。它只针对未硬化的子密钥定义。 如果i ≥ 2^31(硬化子密钥):返回失败 如果i<2^31(普通子密钥):让I= HMAC-SHA512(Key = cpar, Data = serP(Kpar) || ser32(i)).用户可以决定用密码来保护他们的助记符。如果不存在密码短语,则使用空字符串“”。 助记词代表长度为128到256位的熵。然后使用熵通过使用密钥扩展函数PBKDF2来导出更长(512位)的种子。然后,所产生的种子用于构建确定性钱包并获得其密钥。 密钥扩展功能有两个参数:助记词和盐(salt)。密钥扩展功能中的盐的目的是使得难以构建能够进行暴力攻击的查找表。在BIP-39标准中,salt具有另一个目的 - 它允许引入密码短语作为保护种子的额外安全因子。 PBKDF2密钥扩展功能的第一个参数是从步骤6产生的助记词。 PBKDF2密钥扩展功能的第二个参数是salt。salt由字符串常量“mnemonic”和可选的用户提供的密码短语字符串组成。 PBKDF2使用2048轮HMAC-SHA512哈希算法来扩展助记词和salt参数,产生512位值作为其最终输出。那个512位的值就是种子。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表