主页 > 苹果手机imtoken怎么下载 > 科普|以太坊私钥存储文件

科普|以太坊私钥存储文件

苹果手机imtoken怎么下载 2023-01-18 12:10:36

众所周知,在区块链的世界里,私钥是你使用某个地址的唯一标识。 丢失私钥就相当于失去了这个地址的所有权。

以太坊私钥存储

以太坊的私钥文件存放在data目录下(datadir指向的还是默认目录),对应目录为keystore。 所有的私钥文件都被加密存储在这个目录中。

以太坊的客户端或图形界面帮助我们在底层实现复杂的密码。 我们唯一需要做的就是将加密后的私钥文件和加密后的密码保存(额外备份)在keystore下。 否则,存在丢失辛苦赚来的以太币或用钱购买的以太币的风险。

请记住,永远不要犯的错误:丢失密钥库文件或忘记密码!

在以太坊中创建一个帐户

在以太坊中创建账户的操作非常简单,但是有不同的呈现形式。 以geth客户端为例。

命令命令模式

bogon:geth zzs$ ./geth account new
Your new account is locked with a password. Please give a password. Do not forget this password.
Passphrase:
Repeat passphrase:
Address: {0f7b73f3034d0d17a165e4cf50bd77051235b4e6}

以太坊私钥怎么用_以太坊联盟和以太坊的关系_以太坊和以太币有什么区别

bogon:geth zzs$ ./geth account list Account #0: {0f7b73f3034d0d17a165e4cf50bd77051235b4e6} keystore:///Users/zzs/Library/Ethereum/keystore/UTC--2018-02-21T02-56-46.285140000Z--0f7b73f3034d0d17a165e4cf50bd77051235b4e6 bogon:geth zzs$

以上操作是直接执行geth客户端创建账户的命令(command),并显示账户私钥文件信息。 创建过程中需要输入两次加密私钥的密码。 这种方式的好处是不需要单独启动geth节点就可以创建账户。

控制台命令模式

这样需要先启动geth节点,进入console命令行交互界面。 然后执行以下命令:

> personal.newAccount("123456")
"0x00fe1b8a035b5c5e42249627ea62f75e5a071cb3"
// 或
> personal.newAccount()

以太坊私钥怎么用_以太坊和以太币有什么区别_以太坊联盟和以太坊的关系

Passphrase: Repeat passphrase: "0x6a787f16c2037826fbc112c337d7b571bb19c022"

使用个人角色管理和创建新帐户,以及设置密码。

密钥库文件

密钥库文件是您用于签署交易的以太坊私钥的唯一加密文件。 一旦文件或加密密码丢失,意味着您将失去在该地址发起交易和签署交易的权限,账户资金将被永久锁定。

keystore文件的价值在于以加密的方式存储密钥。 同时,您在使用时只需提供keystore文件和对应的密码即可发起交易。 安全性和可用性是完美的平衡。

但需要注意的是,一旦加密文件被密码解锁后,您就可以在有效期内通过客户端发起交易,其他人如果可以访问您的客户端,也可以发起交易。 在网络安全不够的情况下,这就是被盗币的场景之一。

密钥文件内容

密钥文件是一个文本文件,可以用任何文本编辑器或浏览器打开。

bogon:keystore zzs$ cat UTC--2018-02-21T03-01-27.385349000Z--6a787f16c2037826fbc112c337d7b571bb19c022

以太坊私钥怎么用_以太坊联盟和以太坊的关系_以太坊和以太币有什么区别

{ "address": "6a787f16c2037826fbc112c337d7b571bb19c022", "crypto": { "cipher": "aes-128-ctr", "ciphertext": "8ed39b22ab67a787baa4ebb545382255f747328e2a3e2e74970a0f66b422d169", "cipherparams": { "iv": "8e0e0905919d6d1669957fdf65f114ce" }, "kdf": "scrypt", "kdfparams": { "dklen": 32, "n": 262144, "p": 1,

以太坊私钥怎么用_以太坊和以太币有什么区别_以太坊联盟和以太坊的关系

"r": 8, "salt": "a2a84d4843dbcb7c0aefa933f37ead073aefe8503ac8497b77828e85467c6822" }, "mac": "1fc4a5d260fdd70e772fdc9a28614e82d5ff0adc6c98332f8455c5aa0a3352ad" }, "id": "7bce1a69-79a2-429a-836c-cc2bf72c80de", "version": 3 }

通过文件中的内容,我们可以看到是一个json字符串,里面包含了这个秘钥对应的地址,以及一些加密相关的信息。

原理分析加密密钥

以太坊账户由一对公私密钥组成以太坊私钥怎么用,并使用强对称算法(密码)进行加密。

我们来看看《ciphertex密文的对称解密》的具体流程图:

image

以太坊私钥怎么用_以太坊联盟和以太坊的关系_以太坊和以太币有什么区别

客户端读取密钥文件和加密后的密码,解密私钥,然后用私钥对发送的交易进行签名。

密码保护

以太坊使用基于密码的保护机制来解密密钥。 这样用户就不需要记住一串非用户友好的密码。 为了达到这个效果,以太坊使用了一个密钥生成函数,可以根据输入的密码和一系列参数计算出解密密钥。

这里涉及到kdf和kdfparams的使用:

用kdfparams参数调整scrypt函数以太坊私钥怎么用,从反馈的密码中得到解密密钥,这是密钥生成函数的输出。

image

密码错误

当密码输入错误时,密码推导、解密等操作会成功,但最终计算出的以太坊私钥不正确,因此无法进行解锁账户的操作。

mac 值在密钥库文件中发挥作用的地方。 密钥生成函数执行后,对其输出(解密密钥)和密文进行处理,并与mac进行比较(类似于数据签名)。 如果结果与mac相同,则密码正确,即可开始解密操作。

在与mac比较之前,需要将解密密钥(从左数第二个字节起16字节)与ciphertext*密文拼接并进行哈希处理(使用SHA3-256方法)。

image

流程审查

输入密码,作为kdf密钥生成函数的输入,计算解密密钥。 使用解密密钥和密文密文进行连接处理,与mac进行比对,确保密码正确。 最后通过密文对称函数用解密密钥对密文密文进行解密。

image