ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

解密以太坊的keystore文件

2021-02-10 23:30:35  阅读:460  来源: 互联网

标签:keystore 私钥 以太 解密 秘钥 密码 签名


以太坊的keystore文件是用来储存账户的私钥的,一个地址对应着一个keystore文件.

当你调用以太坊函数进行签名交易的时候需要用到密码,这时候以太坊会读取keystore文件下的数据,并且使用你的密码进行一系列操作,最后还原出私钥,并且用这个私钥对你的交易进行签名.  

在keystore中你的私钥并不是以明文形式存放的,而是经过加密,这就是为什么你在签名交易的时候需要输入密码的原因.

{
	"address": "26ce833a705af6846da8c1a43d1e418b93458137",  //账户地址
	"crypto": {
        //使用的加密算法,这里使用AES-CTR模式加密私钥,分组模式是128比特
		"cipher": "aes-128-ctr",    
        //这是对原始私钥加密后的私钥的密文
		"ciphertext": "e2edc5df564536dcf7fb8bcfde99404215d8dd8327684e9d27327a267181a791",
		"cipherparams": {
            //这是向量
			"iv": "9847020ef0bb269b0c463d2ed4bb2ac4"
		},
		"kdf": "scrypt",
		"kdfparams": {
			"dklen": 32, //解密秘钥的长度
        //进行加密解密运算的次数,在越大的情况下,可以增加暴力破解的成本,也会使签名速度变慢
			"n": 262144, 
        //设置为1为只能串行运算.0为并行运算.串行运算可以增加安全性.也会影响签名速度
			"p": 1,
        //加密的分组长度
			"r": 8,
        //可以理解为随机生成的向量
			"salt": "56fc7ac270cd1a357a2bc1959119f10df4b69fabb4d0c198d6527f3c0fe2df6b"
		},
        //这是解密私钥密文的秘钥的hash值,防止用户输入错误的密码而计算出错误的私钥.用与比对私钥是否正确.
		"mac": "7fde1727799710cf122d441c57c50cbc8182f666cca5a7717a8cb3bb8d21639d"
	},
	"id": "1d6b8676-de36-441d-a736-2a8ee94019ea",
	"version": 3
}

以下是详细流程

1.我现在使用以太坊进行签名交易并输入密码.

2.然后以太坊代码拿着我们的密码去找keystore文件.

3.读取文件中的kdfparams下的参数再加上你的密码,使用以太坊内置的秘钥派生函数进行一系列的运算,算出你的私钥密文的秘钥.

4.然后拿着私钥密文的秘钥加载crypto下的参数进行按照参数里规定的算法来解密,获取到最终的私钥.

5.拿到最终私钥后在对私钥进行hash与文件中mac字段下的hash值进行对比,如果为真则私钥正确.在对交易进行签名

标签:keystore,私钥,以太,解密,秘钥,密码,签名
来源: https://blog.csdn.net/atco/article/details/113786979

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有