欧意交易所资讯

uncategorized
首页 > 欧意交易所资讯 > 正文内容

以太坊去中心化网页钱包开发系列:账号Keystore文件导入导出教程

qer1231年前 (2025-01-06)欧意交易所资讯424

如何导入Geth创建的账户?

上一篇文章我们介绍了如何使用私钥和助记词创建账户。如果你使用已有的私钥和助记词,这实际上就是账户导入的过程。

有同学会问,我的账户是Geth生成的,怎么导入到钱包里呢?使用Geth的同学应该知道,Geth在创建账户时会生成对应的JSON文件。该文件存储了加密后的私钥信息,所以我们需要做的就是导入这个文件。该文件通常位于块数据同步的目录下。文件夹(例如:~/./)。

虽然在.js中,可以简单的使用函数来导入文件,但是了解文件的功能和原理还是非常有必要的。当然,如果你不感兴趣,可以直接跳到本文的最后一节:使用。 js实现账户导出和导入。

详细解释为什么需要文件

通过这篇文章,我们了解了开发HD钱包所涉及的BIP32、BIP44、BIP39。私钥实际上代表一个账户。保存账户最简单的方法就是直接保存私钥。如果私钥文件被盗,我们的数字资产就会被洗劫一空。

文件是以加密方式存储密钥的文件。发起交易时,首先使用密码从文件中解密私钥,然后执行签名交易。这样做会安全很多,因为只有同时窃取文件和密码的黑客才能窃取我们的数字资产。

文件是如何生成的

以太坊使用对称加密算法来加密私钥来生成文件,因此对称加密密钥(注意实际上也是发起交易时所需的解密密钥)的选择非常关键。该密钥是使用 KDF 算法导出的。 。因此,在全面介绍如何生成文件之前,有必要先介绍一下KDF。

使用KDF生成密钥

密码学KDF(密钥),其作用是从密码中推导出一个或多个秘密密钥,即生成用于加密的密钥。

事实上,在理解开发HD钱包所涉及的BIP32、BIP44和BIP39时,助记词衍生种子的算法就是KDF函数。其原理是加盐,增加哈希迭代次数。

在 中,使用了一种算法。如果用公式来表达,则推导出Key生成方程为:

代码语言:

复制

DK = Scrypt(salt, dk_len, n, r, p)

salt是随机salt和输出哈希值的长度。 n是CPU/开销值,开销值越高,计算越困难。 r代表块大小,p代表并行度。

直接使用POW算法就可以了

实际使用时会添加密码进行计算。表示这个过程的图是:

以太坊钱包_以太坊硬件钱包原理_以太坊钱包有什么用处

私钥的对称加密

上面已经使用 KDF 算法生成了密钥。该密钥是对称加密的密钥。这里使用的对称加密算法是aes-128-ctr。 aes-128-ctr加密算法还需要进行参数初始化。向量四。

文档

好了,现在结合具体文件的内容我们就可以很容易的明白文件是如何生成的了。

代码语言:

复制

{  
   "address":"856e604698f79cef417aab...",
   "crypto":{  
      "cipher":"aes-128-ctr",
      "ciphertext":"13a3ad2135bef1ff228e399dfc8d7757eb4bb1a81d1b31....",
      "cipherparams":{  
         "iv":"92e7468e8625653f85322fb3c..."
      },
      "kdf":"scrypt",
      "kdfparams":{  
         "dklen":32,
         "n":262144,
         "p":1,
         "r":8,
         "salt":"3ca198ce53513ce01bd651aee54b16b6a...."
      },
      "mac":"10423d837830594c18a91097d09b7f2316..."
   },
   "id":"5346bac5-0a6f-4ac6-baba-e2f3ad464f3f",
   "version":3
}

让我们解释一下每个字段:

我们来彻底梳理一下文件的生成:

使用该函数(根据密码和相应参数)生成密钥。使用上一步生成的秘钥+账户私钥+参数进行对称加密。如何将相关参数保存并输出密文为上述格式的JSON文件,保证密码正确?

当我们使用文件恢复私钥时,我们仍然使用kdf生成秘钥,然后使用秘钥对进行解密。流程如下:

以太坊钱包有什么用处_以太坊硬件钱包原理_以太坊钱包

这时候细心的同学会发现,无论使用什么指令密码来执行这个操作,都会生成私钥,但最终计算出来的以太坊私钥是否正确却不得而知。

这就是文件中 mac 值的作用。 mac值是对kdf输出和密文进行SHA3-256运算的结果。显然,如果密码不同,计算出的mac值也不同,因此可以通过它来检查密码的正确性。检验过程用图表示如下:

以太坊硬件钱包原理_以太坊钱包_以太坊钱包有什么用处

现在我们从解密的角度完整梳理一下整个过程,可以得到下图:

以太坊钱包有什么用处_以太坊硬件钱包原理_以太坊钱包

使用.js实现账户导出和导入

.js 直接提供了加载 JSON 的方法来创建钱包对象并加密生成的文件。方法如下:

代码语言:

复制

// 导入keystore Json
    ethers.Wallet.fromEncryptedJson(json, password, [progressCallback]).then(function(wallet) {
       // wallet
    });
    // 使用钱包对象 导出keystore Json
    wallet.encrypt(pwd, [progressCallback].then(function(json) {
        // 保存json
    });

现在结合接口完全实现账户导出和导入。我们先来看看出口。 UI图如下:

以太坊钱包_以太坊硬件钱包原理_以太坊钱包有什么用处

HTML代码如下:

代码语言:

复制

KeyStore 导出:

密码:
导出

上面主要定义了一个密码输入框和一个导出按钮。点击“导出”后,处理逻辑代码如下:

代码语言:

复制

// "导出" 按钮,执行exportKeystore函数
  $('#save-keystore').click(exportKeystore);
  exportKeystore: function() {
    // 获取密码
    var pwd = $('#save-keystore-file-pwd');
    // wallet 是上一篇文章中生成的钱包对象
    wallet.encrypt(pwd.val()).then(function(json) {
      var blob = new Blob([json], {type: "text/plain;charset=utf-8"});
      // 使用了FileSaver.js 进行文件保存
      saveAs(blob, "keystore.json");
    });
  }

.js 是一个可用于在页面上保存文件的库。

我们来看看导入的文件。 UI图如下:

以太坊钱包_以太坊钱包有什么用处_以太坊硬件钱包原理

代码语言:

复制

 

加载账号Keystore文件

Keystore:
把Json文件拖动到这里
密码:
解密

上面主要定义了一个文件输入框、一个密码输入框和一个“解密”按钮。因此,处理逻辑包括两部分,一是读取文件,二是解析并加载账户。关键代码如下:

代码语言:

复制

 // 使用FileReader读取文件,
var fileReader = new FileReader();
  fileReader.onload = function(e) {
    var json = e.target.result;
    // 从加载
    ethers.Wallet.fromEncryptedJson(json, password).then(function(wallet) {
    }, function(error) {
    });
  };
fileReader.readAsText(inputFile.files[0]);

哈哈哈,又到了升职的时间了。完整源码请订阅简单区块链技术小专栏。赶快订阅吧。如果你路过,千万不要错过。

参考文档

什么是文件

深入浅出地讲解区块链——系统学习区块链,打造最好的区块链技术博客。

扫描二维码推送至手机访问。

版权声明:本文由本站发布,如需转载请注明出处。

转载请注明出处https://juxingsy.com/post/2015.html

标签: 以太坊钱包
分享给朋友:

相关文章

LUNC 币:加密货币领域的独特发展路径与争议剖析

LUNC币属于加密货币领域。它拥有一条独特的发展路径,在加密货币界颇受瞩目。然而,它也引发了众多争议。接下来,我们将从几个角度对其进行深入剖析。 基本面 LUNC币起源于一个古老的加密项目。它背后有一...

云游戏:运用云计算,突破硬件限制的新兴游戏形式

云游戏,一种新兴的游戏形式,它运用云计算技术,将游戏运行与数据存储集中在服务器。玩家仅需通过网络与终端设备连接,便可轻松享受游戏乐趣。这种模式突破了硬件限制,为游戏行业注入了新的活力,拓展了创新的可能...

柴犬币(SHIB)价格下跌:分析师SHIB Knight揭示潜在买入区域与关键价格点

人工智能预测柴犬价格将飙升至 0 美元。人工智能算法为柴犬价格预测增添了另一层含义,预测价格即将暴涨。 AI 表明,柴犬的价值在未来几天内可能会翻倍,最高可达 0 美元。这将比当前水平显着增加 121...

BitMEX交易所:全球领先的加密货币衍生品交易平台与手机APP使用指南

在全球资产交易的中心,有一个非常出色的交易软件 - 一组专业人士在金融市场上开发的产品。以绝对公平,透明的方式为世界各地的投资者提供最佳的交易服务。 软件亮点: 1。这是一种提供衍生品交易的交易所,包...

马斯克收购Twitter引爆狗狗币暴涨60%,币圈如何响应大佬动向?

马斯克收购Twitter引爆狗狗币暴涨60%,币圈如何响应大佬动向?

我猜货币圈没想到马斯克的收购会使()流行吗?这是什么逻辑?实际上,这很简单,因为马斯克正在获取它。 众所周知,马斯克一直很钦佩狗狗币,特斯拉曾经购买了大量比特币。马斯克对虚拟货币的重要性是不言而喻的...

欧意易交易平台下载途径全解析,开启全新金融世界之门

尊敬的各位,今日我们将探讨一个令人心跳加速的话题——欧意易交易平台的下载途径。对于追求刺激与新奇体验的您而言,这必定是不可错过的良机。欧意易交易平台,这一名称展现出其开启全新世界之门的魄力,又岂不让人...

加入欧意交易所,探索元宇宙世界!

探索DeFi,DApps, NFTs 和GameFi的世界,和OKX一起创造未来!