1703877649
哈希功能的输出可以当作对称密钥加密技术使用。所以你肯定在奇怪为什么需要KDF。如果使用的是主密钥、密码或者强密码,那么使用一个哈希函数就行了。例如,HKDF仅使用哈希函数生成密钥。但是如果不能保证用户使用强密码,最好使用哈希函数衍生的密码。
1703877650
1703877651
1703877652
1703877653
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衍生路径是一个字符串,可以使多个加密货币(假设它们使用相同的签名算法)、多个区块链和多个账户等的处理变得容易。
1703877668
1703877669
HD衍生路径需要多少参数就可以有多少参数,还可以对参数使用不同的数值,可以产生不同的地址群和相关密钥。
1703877670
1703877671
LightWallet默认使用m/0’/0’/0’衍生路径。这里,/n’是参数,n是参数值。
1703877672
1703877673
每个HD衍生路径都有curve和purpose。purpose可以是sign或者asymEncrypt。sign表示该路径用于签署交易,asyEncrypt表示该路径用于加密和解码。curve表示ECC的参数。为了签名,参数必须是secp256k1;对于不对称加密,curve必须是curve25591,因为LightWallet出于自身利益强迫我们使用这些参数。
1703877674
1703877675
1703877676
1703877677
1703877679
区块链项目开发指南 5.6 创建钱包服务
1703877680
1703877681
我们已经学习了关于LightWallet的理论,现在是时候用LightWallet和Hooked-Web3-Provider创建钱包服务了。钱包服务将允许用户生成独一无二的种子,显示地址和相关余额,最后将允许用户发送以太币给其他账户。所有操作都在客户端上进行,这样比较容易取得用户的信任。用户必须记住种子或者把它存储在某个地方。
1703877682
1703877683
1703877684
1703877685
1703877687
区块链项目开发指南 5.6.1 必要条件
1703877688
1703877689
在开始创建钱包服务之前,应确保运行geth开发实例(即挖矿),它已启动了HTTP-RPC服务器,允许来自任何域名的客户端请求,最后解锁账户0。运行下面的代码:
1703877690
1703877691
1703877692
1703877693
1703877694
其中,—rpccorsdomain用于允许一些特定域与geth通信。需要提供一个以空格分隔的域名列表,例如“http://localhost:8080https://mySite.com*”。它还支持*通配符。—rpcaddr表示geth服务器可以到达哪个IP地址。默认的是127.0.0.1,所以如果它是一个托管服务器,就不能使用服务器的公共IP地址到达它。因此,将它的值改为0.0.0.0,这表示该服务器可以使用任何IP地址到达。
1703877695
1703877696
1703877697
1703877698
[
上一页 ]
[ :1.703877649e+09 ]
[
下一页 ]