解密以太坊的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值进行对比,如果为真则私钥正确.在对交易进行签名

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值