返回首頁
當前位置: 主頁 > 精通Office > 其他教程 >

如何解密keystore文件

時間:2018-11-05 22:33來源:知行網www.f1globe.com 編輯:麥田守望者

如果你用 geth 創建過賬號「geth –datadir /path/to/data account new」,那么多半知道 keystore 文件,它通過一個 password 加密保存著賬號的私鑰:

 

如何解密keystore文件

如果我想拿到加密前的私鑰怎么辦?最容易想到的辦法是在 MetaMask 中導入賬號的時候選擇通過 JSON 文件導入的方式,然后再導出私鑰。不過這個方法不方便,也無法實現自動化,下面看看如何通過 golang 解密 keystore 文件:
package main

import (
"encoding/hex"
"flag"
"fmt"
"io/ioutil"
"os"

"github.com/ethereum/go-ethereum/accounts/keystore"
"github.com/ethereum/go-ethereum/crypto"
)

var (
file = flag.String("file", "", "file")
password = flag.String("password", "", "password")
)

func init() {
flag.Parse()
}

func main() {
if _, err := os.Stat(*file); os.IsNotExist(err) {
flag.Usage()
os.Exit(1)
}

keyjson, err := ioutil.ReadFile(*file)
if err != nil {
panic(err)
}

key, err := keystore.DecryptKey(keyjson, *password)
if err != nil {
panic(err)
}

address := key.Address.Hex()
privateKey := hex.EncodeToString(crypto.FromECDSA(key.PrivateKey))

fmt.Printf("Address:\t%s\nPrivateKey:\t%s\n",
address,
privateKey,
)
}

更新:本文僅為演示,不推薦通過 flag 傳遞密碼,否則可以在 history 中看到。

------分隔線----------------------------
標簽(Tag):解密keystore文件
------分隔線----------------------------
推薦內容
猜你感興趣
99久久免费高清热精品