主页 > imtoken钱包网址 > 区块链——密码、私钥、密钥库和助记词之间的爱恨交织
区块链——密码、私钥、密钥库和助记词之间的爱恨交织
一、了解密码、私钥、密钥库和助记符1.密码
密码不是私钥,可以修改或重置密码。主要有两个用途,一是转账时的支付密码,二是导入带有keystore的钱包时需要输入的密码,用于解锁keystore。
在钱包应用中,创建账户时需要设置密码。此密码一般要求不少于 8 个字符。为了安全起见,最好设置一个更复杂的密码。
2.私钥
私钥由64位十六进制字符组成,如:0xE4356E49C88C8B7AB370AF7D5C0C54F0261AAA006F6BDE09CD4745CF54E0115A。一个账户只有一个私钥钱包密码助记词私钥丢失,不能修改。谁拥有私钥,谁就可以控制账户的数字货币。通常,钱包中的私钥和公钥是成对出现的。有了私钥,我们可以通过一定的算法生成公钥,然后用公钥通过一定的算法生成地址。这个过程是不可逆的。它是如何产生的?我们在上一章中有详细的说明。私钥必须妥善保管。如果泄露,其他人可以使用私钥解锁账户,转移您账户的数字货币。
在钱包应用中,解锁账户后可以导出私钥。
3.密钥库
因为私钥不利于记忆,容易被盗,所以有一个Keystore。 Keystore 常用于以太坊钱包。它不是私钥,而是将私钥以加密方式保存为 JSON 文件。这个 JSON 文件是密钥库,所以它是加密的私钥。但是Keystore必须配合钱包密码才能使用账户,所以只有Keystore文件无法控制账户。助记词和私钥不同。只要知道助记词或私钥,就可以控制账户。
在应用程序中,可以在解锁帐户后生成Keystore文件。支持的钱包包括 MetaMask、Mist 等。
4. 助记符
私钥是64位长度的16进制字符,不利于记录,容易记忆,所以采用算法将一串随机数转换成12到24位的字符串记单词,方便记录。因此,部分同学得出以下结论:
目前只有少数钱包应用支持导出助记词,如MetaMask等。通过助记词导入账户仅少数钱包应用支持,如MyEtherWallet、imToken等。
BIP
要搞清楚助记词和私钥的关系,就要了解BIP协议,它是Bitcoin Improvement Proposals的缩写,意思是比特币的改进提案,用来提出新的功能或比特币的改进措施。 BIP协议衍生了很多版本,主要是BIP32、BIP39、BIP44。
BIP32
BIP32是HD钱包的核心提案。通过种子生成主私钥,然后衍生出大量的子私钥和地址。种子是一长串随机数。
BIP39
由于种子是一长串随机数,不利于记录,所以我们使用算法将种子转换成12到24字的字符串,方便保存记录。这是 BIP39,它扩展了 HD 钱包种子的生成算法。
BIP44
BIP44 是对 BIP32 和 BIP43 的多币种补充。提议的层次结构非常全面,它允许处理多种货币、多个账户,并且每个账户都有数百万个地址。
BIP32路径中定义了以下5个级别:
m/purpse'/coin_type'/account'/change/address_index
BIP44的规则让HD钱包非常强大。用户只需要保存一个种子,就可以控制所有币种和所有账户的钱包。所以BIP39生成的助记词是非常重要的钱包密码助记词私钥丢失,所以一定要妥善保管,这样会不会被破解?如果一个HD钱包的助记词是12个单词,那么一共有2048个单词的可能性,那么随机生成一个助记词的概率大约是5e+39,所以破解几乎是不可能的。
高清钱包
通过BIP协议生成账户的钱包称为HD钱包。这个高清钱包不是硬件钱包硬件钱包。这里的HD是Hierarchical Deterministic的缩写,意思是层次确定性,所以HD钱包的全称是Bitcoin分为确定性钱包。
以太坊对 BIP 的支持
BIP 用于提出比特币的新功能或改进,那么它如何支持以太坊?
二、密码、私钥、keystore、助记词的关系
它们的关系可以用下图表示。在下面的教程中,我们将学习如何通过代码一一实现以下每一行。
三、钱包的核心:私钥
基于上面的分析,我们对以太坊钱包的账户体系有了很好的了解,那么在使用钱包的过程中我们应该如何保管好自己的钱包呢?主要包括以下几种方法:
账户可以通过以上三种方法之一进行解锁和控制,因此每种方法中的数据都必须正确包含。如有泄露,请尽快转移数字资产。
我们可以得到以下总结:
可以看出,这些方法的核心其实是获取私钥然后解锁账户,所以钱包的核心功能就是创建、存储和使用私钥。
参考文献
web3js.readthedocs.io/en/1.0/web3-eth-accounts.html
github.com/bitcoin/bips/blob/master/bip-0032.mediawiki
github.com/bitcoin/bips/blob/master/bip-0044.mediawiki
github.com/ethereum/EIPs/issues/84
github.com/ethereum/EIPs/issues/85