大螃嗨

好记性不如烂笔头

用户工具

站点工具


hd钱包公私钥分离原理

层级确定性密钥生成(Hierarchical Deterministic)

Hierarchical Deterministic 简称HD

HD协议利用ECDSA公钥创建函数,point(),这个函数输入私钥(一个大的整数),输出图上的点(公钥):

point(private_key) == public_key

point( (parent_private_key + i) % p ) == point(parent_private_key) + point(i) == parent_public_key + point(i)

HD密钥产生需要四个输入:

父私钥和父公钥,都是未压缩的256bit ECDSA密钥。

父链码,看起来是随机数的256bit的数

索引号,程序定义的32bit整数。

在正常形式里,父链码,父公钥和索引号输入到哈希函数(HMAC-SHA512),输出一个512bit确定的但是看起来随机的数据。右半部256bit用作新的链码,左半部256bit用作和父私钥或父公钥组合的整数,相应的产生子私钥和子公钥:

child_private_key == (parent_private_key + lefthand_hash_output) % G

child_public_key == point(child_private_key) 这一步可以放在冷钱包中获取指定路径的公钥(存放私钥)

child_public_key == point( (parent_private_key + lefthand_hash_output) % G )

child_public_key == point(parent_private_key) + point(lefthand_hash_output)

child_public_key == parent_public_key + point(lefthand_hash_output) 这一步可以放在公共服务器中生成指定路径的公钥(不存放任何私钥)

hd钱包公私钥分离原理.txt · 最后更改: 2018/07/26 00:41 由 螃蟹