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

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

时间:2025-07-02 09:11:03来源: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)文件的资料请关其它相关文章!


星露谷物语艾米丽家在哪(星露谷物语艾米丽住在哪里) CPU型号怎么看性能好坏(台式电脑cpu的性能怎么看) 消逝的光芒扔爆竹按键怎么改(消逝的光芒 怎么扔爆竹) Bitfinex交易平台怎么样?bitfinex交易所是正规的平台吗 KYC认证要填写什么信息?KYC认证流程介绍 宝可梦传说阿尔宙斯奋斗石怎么获得(阿尔宙斯努力值刷什么) 挖矿节点是什么意思?挖矿节点和全节点的区别 什么是NFT?如何购买NFT?如何零手续费创建自己的NFT? gate.io交易平台怎么提现?gate的提币地址在哪里 蜀门手游仙禽武器用弓还是弩(蜀门仙禽弩技能) DOGE是什么币种?DOGE币值得投资吗?DOGE币详细介绍 什么是数字货币冷钱包?手把手教你创建比特币冷钱包/使用冷钱包转账 宝可梦传说阿尔宙斯怎么领特典(宝可梦阿尔宙斯怎么获得) csgo双ak到菊花要多少胜场(csgo 双ak) 创造与魔法坐骑怎么敲晕(创造与魔法在坐骑上站着) 星露谷物语玛尼喜欢什么(星露谷物语玛尼喜欢什么前期容易获得的东西) 区块链TVC是什么币种?乐秀链/TVC币全面介绍 币安在中国能下载吗?币安交易所Binance官网登录入口 dnf装备继承在哪2022(dnf装备继承在哪里100级) 冰原守卫者龙骨之地外围在哪里(冰原守卫者黑龙) 诛仙手游天命怎么激活(诛仙手游里天命怎么激活) 帝国战纪圣坛在哪里找到(帝国战纪游戏攻略) 如何在imToken钱包使用cBridge跨链桥?cBridge资产跨链操作步骤教程 奇迹暖暖最美套装服饰介绍 奇迹暖暖最美服装属性详解 比特币合约是什么怎么玩?揭秘比特币期货合约最稳定的方法 不花钱的回合制游戏哪里下载(不花钱的回合制网游) 比特派钱包防御 DeFi 授权风险,只需五招 王者荣耀狂铁S26怎么出装(王者狂铁最强出装视频) 币安永续合约怎么玩?币安永续合约教程 金铲铲之战变异阿狸阵容怎么玩 变异阿狸阵容攻略 冰原守卫者秘银怎么获取(你知道的冰原守卫者相关要素) 冰原守卫者后期怎么刷级(冰原守卫者攻略) AQT是什么币种?AQT币前景及价值分析 泰拉瑞亚猩红钥匙怎么获得(泰拉瑞亚猩红钥匙获得条件) 阴阳师妖狐值得培养吗2022(阴阳师妖狐值得培养吗?) 三国志幻想大陆国家哪个比较强(三国志幻想大陆各国阵容搭配) 有什么能自动挂机的手机游戏(可以自动挂机的游戏) 币圈ipfs线性释放规则,线性释放是什么意思? 新加坡交易所SGX是正规的吗?新加坡交易所(SGX)官网介绍 普通人怎么获得比特币_比特币普通人能挖吗 永续比特币合约开多少倍合理?比特币永续合约手续费怎么算? 梦幻西游手游69升70怎么突破(梦幻手游69到70需要多少经验) CoinEx交易所怎么充值?CoinEx充值、提现、充币、提币图文教程 2023有哪些热门手游值得推荐 2022热门手游排行榜前十 我的世界狐狸吃什么才能驯服(我的世界狐狸吃什么食物驯服) 第五人格紫皮卡怎么分解(第五人格紫皮卡怎么用?) 深入分析比特币和矿场有什么关系? CELR是什么币种?CELR币未来前景和价值如何 国内正规的区块链交易平台有哪些?国内区块链平台推荐 Bitpie知识库:TF版本使用迁移工具恢复到iOS比特派正式版APP教程 比特币交易网站有哪些?2025年最新比特币交易网站大全排名榜 和平精英活跃礼包怎么返点券(和平精英活跃礼包怎么返点券的) 哈希函数是什么意思?哈希函数应用在区块链的哪些地方? 现在不花钱的手游有哪些(不花钱的手游排行榜百度知道) DBOSS交易所怎么提现?DBOSS交易所提现人民币教程 win10电脑C盘满了怎么清理?win10清理c盘垃圾的cmd命令 王者荣耀生日福利怎么领2022(王者荣耀生日福利怎么领取) 屎币涨了160万倍多久时间?屎币2025会涨到多少价格预测 比特币做多好还是做空好?比特币如何做多做空? dnf魔道学者上衣选择什么技能(dnf魔道学者穿什么套装) dnf透明药水叫什么(dnf透明药剂叫什么) 马斯克比特币卖了吗?马斯克比特币赚了多少? 和平精英无人机怎么召唤(和平精英无人机怎么召唤队友) 酷睿13代终于有了对手(锐龙r7 3750h性能) 原神海灵芝有什么用(原神海灵芝有啥用) 洛克王国石王技能怎么搭配(洛克王国石王技能搭配pvp) 思维导图软件哪个好(思维导图电脑app哪个最好) 问道手游天技哪个好(问道天技介绍) MTN币是什么币?MTN币投资前景分析 王者荣耀皮肤销量数据哪里看(王者皮肤累计销量排行榜) 什么是区块链? 玩就送无限钻石的手游有哪些(送永久vip无限钻石的手游) SENT是什么币种?SENT币前景和未来价值如何? 消逝的光芒2豪华版奖励怎么领取(消逝的光芒2预售奖励) STN是什么币?STN币官网总量和上线交易所介绍 imToken钱包怎么添加USDT?imToken钱包添加币种教程 一文读懂区块链去「中心化钱包」还是「去中心化钱包」? Coinbase钱包如何提币?Coinbase钱包提币操作步骤教程 jex数字货币交易平台怎么样?jex交易所全面介绍 虚拟币钱包是什么意思?虚拟币钱包有哪些类型? 王者荣耀成吉思汗为什么不出新皮肤(王者荣耀成吉思汗为什么没有出皮肤) 美联储加息虚拟币会跌吗?美联储加息对虚拟货币影响解析 一文读懂区块链转账手续费是如何收取的呢? SumSwap是什么交易所?SumSwap交易所详细介绍 okex挖矿一天收益多少? okex挖矿单位日收益 Gate.io在中国受监管吗合法吗?Gate交易平台在中国政策详解 艾尔登法环可以隐藏头盔吗(艾尔登法环头像) Uniswap是什么交易所?UNISWAP交易所官网介绍登录入口地址 冒险闯关横版手游有哪些(横版冒险闯关游戏) 羊了个羊在哪玩(羊了个羊在哪玩儿) 区块链CHAT是什么币?CHAT币官网总量和上架交易所介绍 Coinyee币易如何提现人民币?Coinyee币易交易所提现教程 区块链RAMP币是什么币种?RAMP币前景及价值分析 王者荣耀降段保护卡有什么用(王者荣耀降级保护怎么买) 阴阳师萤草怎么提高加血量(阴阳师萤草值得培养吗?) 比特儿Gate.io最新版本更新内容,Gate.io官网比特网App官方入口 魔兽世界救赎之魂有什么用(wow9.0救赎之魂) 第五人格宿伞之魂天赋加点推荐(第五人格宿伞之魂人格搭配) 王者荣耀艾琳新皮肤多少钱(王者荣耀艾琳的皮肤多少钱) 魔兽世界wlk考达拉平台在哪里(达拉然考考古任务多少能接)

热门文章

推荐专题

更多>>

游戏推荐

更多>>