JWLAZY / block_chain_know

区块链相关笔记

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

以太坊地址,私钥和备份文件和密码之间的关系

JWLAZY opened this issue · comments

commented

交流地址: telegram

地址

地址 是私钥生成的

备份文件

备份文件 可以 使用 私钥 + 密码 生成

私钥

私钥可以使用 备份文件+密码 解码生成

密码

密码一般是用户自己输入的,使用密码 + 私钥可以生成备份文件,
一个私钥可以生成多个备份文件,所以在各个钱包导入备份文件时,需要输入的是生成这个备份文件时的密码,
在每个钱包中都可以给地址设置不同的密码是因为根据了不同的密码和私钥生成不同的备份文件,而转账交易时有使用不同的密码和不同的备份文件生成了相同的密钥来进行支付.

web3 实例

生成账号

image
生成账号时先生成了私钥,然后根据私钥计算出来公钥,然后根据公钥来生成地址.

生成备份文件

可以看到create 方法返回的结果对象中还有一个encrypt方法,这个方法是直接使用一个密码直接对私钥进行加密,加密结果是生成一个备份文件.
当然也web3直接提供一个加密私钥和密码的方法

这个方法的返回值就是一个备份文件的内容,一般钱包的做法是把这个备份文件存储起来.用户转账时让用户输入密码,结合这个备份文件再生成私钥.

根据备份文件和密码恢复密钥

在一般的钱包场景下,在用户需要交易时是需要输入密码的,而这一步有什么用?
软件提供商一般情况下会 保存生成地址时的备份文件,而备份文件时不能够直接支付的,但是备份文件可以和密码一起反向的获取到密钥,而交易时需要的是密钥,所以web3.js提供了一个利用密码和备份文件生成密钥的方法.
image
但是需要注意,这个密码是当时生成这个备份文件时使用的密码

不同的钱包的密码不一样,为什么都可以支付.

因为钱包在导入私钥或者生成私钥时,都输了一个密码,而这个密码是用来生成备份文件的.所以每个钱包保存的备份文件不一样,解锁这个备份文件需要生成时的密码.但是解锁后生成的私钥又是一样的.最终用一样的私钥来产生的交易.

微信交流群:

我的币都给转到优盾钱包了,是我用过的比较安全的钱包了,保管好私钥就行了