打字猴:1.703877618e+09
1703877618 HD钱包有多种类型,它们的种子格式以及生成地址和密钥的算法不同,例如BIP32、Armory、Coinkite、Coinb.in等。
1703877619
1703877620
1703877621 什么是BIP32、BIP44和BIP39?
1703877622
1703877623 比特币改进提议(Bitcoin Improvement Proposal,BIP)是一个为比特币社区提供信息的设计文档,它描述比特币的一个新功能或者其过程或者环境。BIP应当为该功能提供一份简明技术规范和功能基本原理。在写本书时,有152个BIP。BIP32和BIP39分别提供关于实现HD钱包和助记种子规范(mnemonic seed specification)的算法信息。
1703877624
1703877625 如要学习更多BIP的相关知识,请访问https://github.com/bitcoin/bips。
1703877626
1703877627
1703877628
1703877629
1703877630 区块链项目开发指南 [:1703875346]
1703877631 区块链项目开发指南 5.4 密钥衍生函数
1703877632
1703877633 不对称的加密算法定义密钥的性质以及生成密钥的方法,因为密钥需要相互关联。例如,RSA密钥生成算法是确定性的。
1703877634
1703877635 对称的加密算法只定义密钥长度。密钥由用户来生成。有多种算法生成密钥,其中一种是KDF。
1703877636
1703877637 密钥衍生函数(KDF)是用于从一些密值(例如主密钥、密码)中衍生对称密钥的确定性算法。有多种类型的KDF,例如bcrypt、crypt、PBKDF2、scrypt、HKDF等。如要学习更多KDF的相关知识,请访问https://en.wikipedia.org/wiki/Key_derivation_function。
1703877638
1703877639
1703877640 为了从一个密值生成多个密钥,可以对一个数执行拼接(concatenate)和递增(increment)运算。
1703877641
1703877642 基于密码的密钥衍生函数用一个密码生成一个对称密钥。由于在实践中,用户通常使用较弱的密码,基于密码的密钥衍生函数比较慢,占用了大量内存,使其难以启动强力攻击和其他攻击。基于密码的密钥衍生函数使用广泛,因为难以记住密钥,且存储也有风险——有可能被盗。PBKDF2是一个基于密码的密钥衍生函数的例子。
1703877643
1703877644 主密钥或者密码难以使用强力攻击破解;因此,如果你想从主密钥或者密码生成一个对称密钥,可以使用不以密码为基础的密钥衍生函数,例如HKDF。HKDF比PBKDF2快得多。
1703877645
1703877646
1703877647 为什么使用KDF,而不使用哈希函数?
1703877648
1703877649 哈希功能的输出可以当作对称密钥加密技术使用。所以你肯定在奇怪为什么需要KDF。如果使用的是主密钥、密码或者强密码,那么使用一个哈希函数就行了。例如,HKDF仅使用哈希函数生成密钥。但是如果不能保证用户使用强密码,最好使用哈希函数衍生的密码。
1703877650
1703877651
1703877652
1703877653
1703877654 区块链项目开发指南 [:1703875347]
1703877655 区块链项目开发指南 5.5 LightWallet
1703877656
1703877657 LightWallet是一个实现BIP32、BIP39和BIP44的HD钱包。LightWallet提供API来创建和签署交易,或者使用LightWallet生成的地址和密钥加密和解密数据。
1703877658
1703877659 LightWallet API被分成4个命名空间,即keystore、signing、encryption和txutils。signing、encrpytion和txutils分别用来提供API以签名交易、非对称的密码和创建交易,而keystore命名空间用于创建keystore、生成种子等。keystore是一个存储加密种子和密钥的对象。如果使用Hooked-Web3-Provider,keystore命名空间实现交易签名者方法,该方法要求签署we3.eth.sendTransaction()调用。因此keystore命名空间对于在其中发现的地址可以自动创建和签署交易。实际上,LightWallet的主要目的是成为Hooked-Web3-Provider的一个签名提供方。
1703877660
1703877661 可以配置密钥存储实例,来创建和签署交易或者加密和解密数据。签署交易用secp256k1参数,加密和解密用curve25519参数。
1703877662
1703877663 LightWallet的种子是一个12词的助记符,容易记住但不容易进行破解。它不是任意12个词,而是LightWallet生成的种子。LightWallet生成的种子在选择词和其他东西方面有特定的属性。
1703877664
1703877665 HD衍生路径
1703877666
1703877667 HD衍生路径是一个字符串,可以使多个加密货币(假设它们使用相同的签名算法)、多个区块链和多个账户等的处理变得容易。
[ 上一页 ]  [ :1.703877618e+09 ]  [ 下一页 ]