手机版
扫描查看手机站
首页 > 文章 > 加密世界 > 正文

区块链科普:什么是以太坊私钥储存(Keystore)文件?

时间:2025-11-08 20:08:35来源:525游

进入keystore管理以太坊私钥的障碍很大,主要是因为以太坊客户端在直接的命令行或图形界面下隐藏了大部分的密码复杂性。

例如,用geth:

$ geth account new
Your new account is locked with a password. Please give a password. Do not forget this password.
Passphrase:
Repeat passphrase: 
Address: {008aeeda4d805471df9b2a5b0f38a0c3bcba786b}

$ geth account list
Account #0: {8a1c4d573cc29a96547816522cfe0b266e88abac} keystore:~/.ethereum/keystore/UTC--<created_date_time>--  008aeeda4d805471df9b2a5b0f38a0c3bcba786b

我只需要输入3个单词就能创建一个新账户。然后输入两遍密码,就这么简单!我的以太坊keystore文件就创建了。

你需要把那些非常珍贵的keystore文件备份、存储在一个或多个隐秘的位置,这样就只有你能获取这些文件并取到资金。

从经验来看,当我没有完全理解一个新概念的微妙之处,并且过分依赖抽象层和现有工具来让我的生活更轻松时,我很有可能忘记一些事情,采取不必要的捷径并且搞砸它。搞砸的时候,可能就是会以我辛苦挣来的以太币被永久锁定而告终(幸好它还没有发生!)。

幸运的是,作为一个以太坊用户,你能搞砸的方式并不多:

  1. 你丢失了你的keystore文件
  2. 你忘记了和文件关联的密码
  3. 或者以上两者你都搞砸了。

在本文中,我们将为你介绍以太坊私钥是如何从 keystore 文件中算出来的。我们将讨论加密函数(对称加密,密钥生成函数,SHA3 哈希算法),但我们会尽可能的保证简明直接地来解释上述问题。

什么是keystore文件?

以太坊的 keystore 文件(Linux 系统存储在 ~/.ethereum/keystore 或者 Windows 系统存储在 C:\Users<User>\Appdata/Roaming/Ethereum/keystore)是你独有的、用于签署交易的以太坊私钥的加密文件。如果你丢失了这个文件,你就丢失了私钥,意味着你失去了签署交易的能力,意味着你的资金被永久的锁定在了你的账户里。

当然,你可以直接把你的以太坊私钥存储在一个加密文件里,但是这样你的私钥容易受到攻击,攻击者简单的读取你的文件、用你的私钥签署交易,把钱转到他们的账户中。你的币会在你意识到发生什么了之前的短时间内丢失。

这就是以太坊 keystore 文件被创建的原因:它允许你以加密的方式存储密钥。这是安全性(一个攻击者需要 keystore 文件和你的密码才能盗取你的资金)和可用性(你只需要keystore文件和密码就能用你的钱了)两者之间完美的权衡。

为了让你发送一些以太币,大多数的以太坊客户端会让你输入密码(与创建账户时密码相同)以解密你的以太坊私钥。一旦解密,客户端程序就得到私钥签署交易,允许你移动资金。

Keystore文件是什么样子的?

如果你打开一个你的账户文件,它看起来像这样(取自这里):

ount’s file, it would look like this (taken from here):

$ cat ~/.ethereum/keystore/UTC--<created_date_time>--  008aeeda4d805471df9b2a5b0f38a0c3bcba786b
{
    "crypto" : {
        "cipher" : "aes-128-ctr",
        "cipherparams" : {
            "iv" : "83dbcc02d8ccb40e466191a123791e0e"
        },
        "ciphertext" : "d172bf743a674da9cdad04534d56926ef8358534d458fffccd4e6ad2fbde479c",
        "kdf" : "scrypt",
        "kdfparams" : {
            "dklen" : 32,
            "n" : 262144,
            "r" : 1,
            "p" : 8,
            "salt" : "ab0c7876052600dd703518d6fc3fe8984592145b591fc8fb5c6d43190334ba19"
        },
        "mac" : "2103ac29920d71da29f15d75b4a16dbe95cfd7ff8faea1056c33131d846e3097"
    },
    "id" : "3198bc9c-6672-5ab3-d995-4942343ae5b6",
    "version" : 3
}

一个有许多神奇的参数的粗笨的 JSON 文件,似乎与复杂的加密操作相关。这绝不吸引人。

让我们深入理解一下

如果你看这个 keystore 文件的结构,你会看到大部分内容都是在“crypto”中的:

"crypto" : {
    "cipher" : "aes-128-ctr",
    "cipherparams" : {
     "iv" : "83dbcc02d8ccb40e466191a123791e0e"
    },
    "ciphertext" : "d172bf743a674da9cdad04534d56926ef8358534d458fffccd4e6ad2fbde479c",
    "kdf" : "scrypt",
    "kdfparams" : {
     "dklen" : 32,
     "n" : 262144,
     "r" : 1,
     "p" : 8,
     "salt" : "ab0c7876052600dd703518d6fc3fe8984592145b591fc8fb5c6d43190334ba19"
    },
    "mac" : "2103ac29920d71da29f15d75b4a16dbe95cfd7ff8faea1056c33131d846e3097"
   },

这包括:

cipher:对称 AES 算法的名称;

cipherparams:上述 cipher 算法需要的参数;

ciphertext:你的以太坊私钥使用上述 cipher 算法进行加密;

kdf:密钥生成函数,用于让你用密码加密 keystore 文件;

kdfparams:上述 kdf 算法需要的参数;

Mac:用于验证密码的代码。

让我们看看他们是如何协同工作的,如何在你的密码下保护 keystore 文件。

1. 加密你的私钥

就像之前提到的,一个以太坊账户就是用于加密签署交易的一个私钥 —公钥对。为了确保你的私钥没有在文件中明文存储(即任何人只要能得到这个文件就能读),使用强对称算法(cipher)对其加密至关重要。

这些对称算法使用密钥来加密数据。加密后的数据可以使用相同的方法和同样的密钥来解密,因此算法命名为对称算法。在本文中,我们称这个对称密钥为解密密钥,因为它将用于对我们的以太坊私钥进行解密。

以下是 cipher,cipherparams 和 ciphertext 对应的概念:

  • Cipher 是用于加密以太坊私钥的对称加密算法。此处cipher用的是 aes-128-ctr 加密模式。
  • Cipherparams 是 aes-128-ctr 加密算法需要的参数。在这里,用到的唯一的参数 iv,是aes-128-ctr加密算法需要的初始化向量。
  • Ciphertext 密文是 aes-128-ctr 函数的加密输入。

所以,在这里,你已经有了进行解密以太坊私钥计算所需要的一切...等等。你需要首先取回你的解密密钥。

区块链科普:什么是以太坊私钥储存(Keystore)文件?

-ciphertex 密文的对称解密-

2. 用你的密码来保护它

要确保解锁你的账户很容易,你不需要记住你的每一个又长又非用户友好型的用于解密 ciphertext 密文解密密钥。相反,以太坊开发者选择了基于密码的保护,也就是说你只需要输入密码就能拿回解密密钥。

为了能做到这一点,以太坊用了一个密钥生成函数,输入密码和一系列参数就能计算解密密钥。

这就是 kdf 和 kdfparams 的用途:

  • kdf 是一个密钥生成函数,根据你的密码计算(或者取回)解密密钥。在这里,kdf 用的是scrypt算法。
  • kdfparams 是scrypt函数需要的参数。在这里,简单来说,dklen、n、r、p 和 salt 是 kdf 函数的参数。更多关于 scrypt 函数的信息可以在这里找到。

在这里,用 kdfparams 参数对 scrypt 函数进行调整,反馈到我们的密码中,你就会得到解密密钥也就是密钥生成函数的输出。

区块链科普:什么是以太坊私钥储存(Keystore)文件?

-用密码生成密钥-

3. 确保你的密码是对的

我们描述了用密码和 keystore 文件生成以太坊私钥所需要的所有东西。然而,如果解锁账户的密码错误会发生什么?

根据迄今为止我们所看到的,所有操作(密码派生和解密)都会成功,但是最终计算的以太坊私钥不是正确的,这首先违背了密钥文件的使用初衷!

我们要保证输入解锁账户的密码是正确的,和最初创建 keystore 文件时一样(回想一下 geth 下创建新账户时两次输入的密码)。

这就是 keystore 文件中 mac 值起作用的地方。在密钥生成函数执行之后,它的输出(解密密钥)和 ciphertext 密文就被处理【注1】,并且和 mac(就像一种认可的印章)作比较。如果结果和 mac 相同,那么密码就是正确的,并且解密就可以开始了。

【注1】这里有点简略了。在和 mac 进行比较之前,解密密钥(左起第二字节开始的16字节)要和 ciphertext 密文连接在一起,并进行哈希散列(用SHA3-256的方法)。

区块链科普:什么是以太坊私钥储存(Keystore)文件?

把所有的都放到一起考虑

唷!如果你已经做到了这一点,那么恭喜你!

让我们回顾一下我们描述的3个函数。

首先,你输入了密码,这个密码作为 kdf 密钥生成函数的输入,来计算解密密钥。然后,刚刚计算出的解密密钥和 ciphertext 密文连接并进行处理,和 mac 比较来确保密码是正确的。最后,通过 cipher 对称函数用解密密钥对 ciphertext 密文解密。

瞧!解密的结果是你的以太坊私钥。 你可以在这里看看整个过程:

区块链科普:什么是以太坊私钥储存(Keystore)文件?

就像你从图中可以看到的,整个过程可以看做一个黑盒(不过,图中是个灰盒),你的密码是惟一的输入,你的以太坊私钥是惟一的输出。所需的其他信息都可以在你的以太坊账户创建时生成的keystore文件中获得。

由于这个原因,请确保你的密码足够强(并且无论如何你要记住它!)才能保证即使攻击者偷到了你的keystore文件也不能轻易得到你的私钥。

以上就是区块链科普:什么是以太坊私钥储存(Keystore)文件?的详细内容,更多关于以太坊私钥储存(Keystore)文件的资料请关其它相关文章!


原神宵宫突破加多少爆率(原神宵宫突破材料一览) 最近大火的doggy加密狗是什么币 doggy币详细介绍+购币教程 模拟停车场停车3D新手怎么玩 新手玩法分享(3d模拟停车游戏大全) Solana交易所Serum的介绍,Solana链去中心化交易所Serum分析 cf昵称在哪里修改(cf改昵称在哪里改) 火币永续合约每天扣多少钱?火币永续合约怎么玩? 三国志幻想大陆元宝怎么花(三国志幻想大陆元宝花在哪) 冰原守卫者如何获取橡木桶(冰原守卫者松木) 直播平台排行 最火的直播平台有哪些 lbank交易所是哪国的?lbank交易所官网介绍 柴犬币是什么币种?SHIB币(柴犬币)介绍 梦幻西游手游月宫和花果山哪个厉害(梦幻西游手游月宫和花果山哪个值得玩) 区块链扫盲:区块链中的空投是什么意思? 一文了解CINU是什么币种?CINU币怎么样? 王者荣耀露娜启示之音值得买吗(启明露娜出装) 我的世界羊如何繁殖(我的世界羊繁殖后的颜色) 放开那三国3吴国阵容推荐(放开那三国3吴国强吗) 太阁立志传5怎么冥想(太阁立志传5自创流派冥想) dnf退出公会多久能加入新的公会(dnf退出公会有什么影响) 动漫手游有哪些值得一玩(动漫游戏有哪些手游) 门罗币如何提现?XMR币提现人民币操作教程 HyperPay手机钱包怎么用?HyperPay钱包怎么下载 旅行必备的6个APP!超好用(旅行必备 app) 消逝的光芒2豪华版奖励怎么领取(消逝的光芒2预售奖励) 第五人格星座对应星座有哪些人物(第五人格里的星座是什么) 火币网怎么充币USDT? 火币网买USDT图文教程 阴阳师两面佛怎么获得(阴阳师ssr两面佛的获取方式) Tidex交易所怎么注册?Tidex交易所使用教程 英雄联盟手游天使如何出装 天使出装推荐(lol天使出什么装备) 如何在imToken钱包使用cBridge跨链桥?cBridge资产跨链操作步骤教程 Bitso是什么交易所?Bitso交易所怎么样? 和平精英一夫当关是什么意思(和平精英一凡) 消逝的光芒2无法启动怎么解决(消逝的光芒2闪退) cf手游跨系统角色转移卡怎么买(cf手游跨系统角色转移卡在哪里买) DNF105装备还能融合么(105版本装备能继承吗) 时空猎人魔晶怎么刷(时空猎人魔晶怎么刷最快) 欧易交易所苹果怎么注册?欧易OKX平台iOS下载注册教程 冰原守卫者60层塔怎么打(冰原守卫者怎么升级快) 比特币高位横盘是洗盘还是出货?比特币高位横盘的原因分析 和平精英灵敏度丢失怎么找回(和平精英灵敏度消失了) 宝可梦传说阿尔宙斯闪光有什么区别(阿尔宙斯gf) 阿卡丽的神秘商店多久开一次?阿卡丽的神秘商店官网入口2022进入方式 有没有不费流量的手机网游推荐(有没有不费流量的游戏) 和平精英没有拍摄模板怎么办(和平精英没有照片) 创造与魔法灵惑蝶速度(创造与魔法蝴蝶速度) 梦幻西游乾元丹怎么获得(梦幻乾元丹怎么弄) 诛仙手游天音技能加点攻略(诛仙手游天音技能加点攻略最新) 黑色沙漠手游怎么跳跃(黑色沙漠手游跳跃键出不来) 明日之后玫瑰花怎么获得(明日之后玫瑰花怎么搞) BCEX交易所如何注册账号?详细图文教程 比特币白皮书的发布日期?比特币白皮书发布日期具体是哪天? 小狐狸钱包数字藏品购买图解教程 英雄联盟人机经验都一样吗(英雄联盟人机有经验吗) DNF协调结晶体怎么获得(dnf协同输出怎么变成纯输出) 帝国战纪是什么类型游戏 帝国战纪游戏类型(帝国战纪手游) 第五人格牛仔天赋加点方法(第五人格牛仔的技能是什么) 和平精英转区要两边都30级吗(和平精英转区是不是只能转一次) 区块链MKR币怎么样?MKR币前景和价值分析 安币是正规平台吗在中国合法吗?安币交易所www.binance.com官方介绍 元宇宙是啥意思 为什么火了?元宇宙概念发展空间的趋势 比特派钱包知识库:火币生态链HECO中MDEX使用教程 帝国战纪游戏船坞怎么得到(帝国战纪战役攻略) 牛顿币怎么样?NEW币/牛顿币能涨到多少? PEPE币值得长期持有吗?PEPE币2025会涨多少倍价格预测 狗狗币和比特币在原理和金融价值方面的的区别 时空猎人贡献币怎么得(时空猎人活动攻略) 魔兽世界救赎之魂有什么用(wow9.0救赎之魂) blockchain钱包怎么用?Blockchain钱包使用教程 玛娜希斯回响圆形贝壳怎么获得(玛娜希斯的回想) 魔兽世界基尔罗格之眼会引怪吗(基尔罗格死眼) 欧易合约手续费怎么算的?欧易交易所合约手续费明细 问道手游哪个职业好(问道手游哪个职业好杀地宫) 以太坊ETH钱包要用比特派的五大理由 梦幻西游手游小雷音适合平民玩吗(梦幻西游手游小雷音厉害吗小雷音值得转吗) 和平精英皇冠和白银组队能加分吗(和平精英皇冠和白银排到的是什么段位) 古典仙侠手游哪一款好玩(古典仙侠排行榜前十的小说有哪些) 创造与魔法蚯蚓哪里抓(创造与魔法蚯蚓哪里多?) 第五人格天赋点怎么获取(第五人格天赋点怎么获取不了) 金铲铲之战为啥不叫云顶之弈(金铲铲之战不是云顶之弈) 帝国战纪图腾有什么作用(帝国战纪游戏攻略) 金铲铲之战不能编辑阵容吗(金铲铲之战怎样自己编辑阵容) 魔兽世界黑市在哪里(魔兽世界黑市在哪里8.3) 如何选择数字货币交易平台? 消逝的光芒2生存者还是治安者好(消逝的光芒2刷幸存者等级) 币安binance官方kol计划指南,bianance 联盟推广规则 defi杠杆挖矿是什么?通俗解释defi杠杆挖矿 什么兼职靠谱能挣钱(什么兼职可靠能挣到钱) 2023有什么手游可以赚人民币(2021年有什么手游可以赚钱) 只狼技能怎么加比较好(只狼技能加点优先级) RSS3是什么币种?一文读懂RSS3币怎么样 去中心化交易所是如何工作的?去中心化交易所有法币交易吗? 第五人格医生皮肤治疗特效(第五人格医生治疗时的特效) 金贝LT5开箱实测:更强算力、挖矿莱特币首选 原神凝光应该如何配队(原神凝光怎么配对) 诺亚之心鸡蛋在哪(诺亚之心手游视频) 三国志幻想大陆哪个神将最值得培养(三国志幻想大陆值得培养的神将) 比特币怎么挖矿教程 比特币的挖矿教程详细步骤 矿机算力能达到多少?矿机算力单位如何换算? 王者荣耀芈月怎么出装2022(王者荣耀芈月怎么出装备) 原神:天目影打刀图纸怎么获得 四块石板位置图解

热门文章

推荐专题

更多>>

游戏推荐

更多>>