Keystore文件如何生成的?

Ida ·
更新时间:2024-09-21
· 987 次阅读

在这里插入图片描述
我们在新建以太坊账户时,会让你指定一个密码,就是上图的Passphrase
在这里插入图片描述
同时可以在keystore目录里看到这个账户的keystore文件
在这里插入图片描述
那么这个账户的keystore文件如何生成的?

利用你的密码生成一个密钥,上图用的是scrypt算法,scrypt算法有一些参数,其中 salt 是一段随机的盐,dk_len 是输出的哈希值的长度。n 是 CPU/Memory 开销值,越高的开销值,计算就越困难。r 表示块大小,p 表示并行度。 利用第一步生成的密钥对你生成账户时产生的私钥和参数进行对称加密,注意,使用对称加密算法说明这个密钥既能加密也能解密,上图用的对称加密算法时aes-128-ctr,参数有iv。生成的密文还会和密钥结合进行 SHA3-256运算得出一个mac参数,用于验证密钥正确性。 把第二步输出的密文和所有参数保存进json格式的文件里

keystore文件实例

{ "address": "758161a44d6fbd558c01c6378bf426207e84a003", "crypto": { "cipher": "aes-128-ctr", "ciphertext": "9cec8107d25b17a10666257a25dc16d89e93acce88127ae5949236b49838897c", "cipherparams": { "iv": "e0441896455036fa34808e27d052912d" }, "kdf": "scrypt", "kdfparams": { "dklen": 32, "n": 262144, "p": 1, "r": 8, "salt": "b55e5aabbc6ca7c4577040510346a67c4a874273cb9d21ef0f963669a4e58356" }, "mac": "a7380f746758e3d8349358d379c38f7b537f072499c0c5dcb85b338c19137e82" }, "id": "dfba1c73-0ee9-4d52-8633-5e37361ef8eb", "version": 3 }

address:账户地址
cipher:对称加密算法
ciphertext:对称加密的输出文本,就是上面的步骤2
cipherparams:对称加密时的参数,这里有iv
kdf:利用密码推导密钥的算法
kdfparams:kdf算法需要的参数
mac:验证密码的正确性,上图中,无论你输入什么密码,都会产生一个密钥(decryption key),这个密钥对ciphertext解密会产生一个私钥,无法得知密码的正确性,mac生成步骤上面步骤2有
id : uuid
version: Keystore 文件的版本,目前为第 3 版,也称为 V3 KeyStore。

本文参考:
https://learnblockchain.cn/2018/10/25/eth-web-wallet_2/
https://www.cnblogs.com/405845829qq/p/10103747.html


作者:pan zun



keystore

需要 登录 后方可回复, 如果你还没有账号请 注册新账号