欧意交易所资讯

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

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

qer1236个月前 (01-06)欧意交易所资讯192

如何导入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

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

相关文章

深入了解恒星币:诞生背景、技术原理及独特优势解析

恒星币是一种有特色的加密货币,它在数字货币领域有独特的定位,也有影响力,其目的是建立一个去中心化系统,这个系统能连接全球银行和用户,下文会从各个方面深入了解恒星币。 诞生背景 恒星币是由瑞波币原团队成...

个人防护装备CE认证类别详解:第I类与第II类的定义、合规流程及注意事项

第一类(“简单设计”) 1. 定义:此类产品通常设计简单,风险较低。制造商可以通过自我声明证明产品符合相关指令的要求。 2.合规流程:制造商需要撰写EC合规声明,并详细说明其产品如何符合指令的要求。此...

狗狗币交易平台安全性及便捷性分析:如何选择最佳交易平台

狗狗币交易平台是近些年兴起的一个特别的场所。狗狗币起初是一种带有恶搞性质的加密货币,后来逐渐在市场里有了一定的地位。而狗狗币交易平台是用来进行这种加密货币买卖的地方。 平台安全性 狗狗币交易平台首先要...

期货交易所官方网站:核心资讯汇聚,投资决策必备

期货交易所官方网站充当着期货市场信息交流的核心节点,汇集了大量的核心资讯,对于投资者及行业从业者而言,其地位与作用无可替代。 官网的基本构成 通常,期货交易所的官方网站首页会突出展示核心业务及最新资讯...

数字孪生:起源、发展与广泛应用

数字孪生:起源、发展与广泛应用

“孪生”这一概念源于NASA的“阿波罗计划”。2003年左右,数字孪生(Twin)这一概念首次出现在密歇根大学一位教授的产品生命周期管理课程中。直到2010年,“孪生”一词才在NASA的技术报告中正式...

如何安全下载欧意交易平台?官网下载指南及注意事项

如今数字资产交易很盛行,欧意交易平台成为众多投资者的选择,所以了解其下载官网的准确信息是很有必要的。 官网安全性 欧意交易平台的官网得去官方渠道进行查找,这样才能确保下载的安全性。因为官网有严格的安全...

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

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