在以太坊生态中,私钥是用户控制资产的核心凭证,而私钥的存储与管理直接关系到资产安全,为了平衡安全性与便捷性,以太坊社区发展出了标准化的私钥文件格式,这些格式通过加密算法将原始私钥与用户密码绑定,降低私钥泄露风险,本文将深入探讨以太坊私钥文件格式的名称、结构及安全机制,帮助用户理解私钥存储的本质。
以太坊私钥文件最常用的格式名称是Keystore文件(也称为UTC文件或JSON格式的Keystore),这两种名称本质上指向同一种文件格式,只是在不同场景下的习惯性称呼:

Keystore文件本质是一个加密后的JSON文件,其内容包含加密后的私钥、元数据及解密所需的参数,以以太坊官方推荐的scrypt算法为例,一个标准的Keystore文件通常包含以下字段:

{
"address": "0x742d35Cc6634C0532925a3b844Bc9e7595f8e5e9",
"crypto": {
"cipher": "aes-128-ctr",
"ciphertext": "a1b2c3d4e5f6...",
"cipherparams": {
"iv": "f7e8d9c0b1a2..."
},
"kdf": "scrypt",
"kdfparams": {
"dklen": 32,
"n": 262144,
"r": 8,
"p": 1,
"salt": "e9f8a7b6c5d4..."
},
"mac": "5f4d3c2b1a0e9f8a7b6c5d4e3f2a1b0c..."
},
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"version": 3
}
各字段含义如下:

aes-128-ctr),用于加密原始私钥; scrypt算法的n、r、p,控制计算复杂度); v3(早期有v1、v2,已不推荐使用)。 Keystore文件的核心安全逻辑是“密码 加密算法双重保护”:
scrypt或pbkdf2)生成加密密钥。scrypt因可配置计算成本(如n参数),能有效抵御暴力破解(如ASIC矿机攻击); AES-128-CTR等对称加密算法对原始私钥加密,生成密文存储; mac字段通过密码与密文共同计算生成,当用户输入密码时,系统会重新计算mac并与文件中的mac比对,确保密码正确且文件未被篡改。 用户接触私钥时,还可能遇到原始的十六进制(hex)格式私钥(如0x1234...5678,64位十六进制字符),Keystore文件与原始私钥的本质区别在于:
Keystore文件是以太坊钱包(如MetaMask、MyEtherWallet、geth)的标准导入/导出格式,具有广泛的兼容性:
尽管Keystore文件提高了私钥安全性,但仍需注意:
mac或kdfparams被篡改,将导致无法解密,需确保文件完整性;