如何解密keystore文件
2023-04-18 16:16:31 时间
如果你用 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: %s
PrivateKey: %s
",
address,
privateKey,
)
}
更新:本文仅为演示,不推荐通过 flag 传递密码,否则可以在 history 中看到。
相关文章
- SAP 电商云 Spartacus UI CheckoutDeliveryService 的单元测试设计
- 关于 TypeScript 联合类型 union type 赋值的一个错误消息
- SAP 电商云 Spartacus UI 修改 Delivery Mode 触发的三个 HTTP 请求
- 如何修改 Windows10 操作系统里某种文件类型的默认图标
- SAP 电商云 Spartacus UI 有状态 的 url 和 title 属性的赋值代码
- 如何修改 pdf 文件默认的显示图标
- 推荐一个 Chrome 浏览历史记录管理的扩展 - History Trends Unlimited
- 如何在 ABAP Development Tool 创建新的 ABAP Cloud 项目
- SAP 电商云 Spartacus UI 如何自定义 SeoMetaService
- SAP 电商云 Spartacus UI 的 checkout 设计
- Cypress 基础 - 元素的定位
- 借助 SAP 电商云 Spartacus UI 提供的 Schematics 辅助您的前端项目升级
- 做好代谢组学研究的关键在哪里?
- SAP 软件的精髓之一:各种各样的决定机制 - Determination Logic
- 使用 Recipe 安装 SAP Commerce Cloud
- 人工成本上升+设备停机率高,制造企业该如何破而后立?
- mySPA set delivery mode 之后,Chrome network 里观察不到cart 请求了
- SAP 电商云 Spartacus UI Delivery Mode ID 的 validator
- 代谢组学服务找CRO公司关键点竟然在这里
- 使用 cx recipe 安装 Hybris Commerce Cloud 之后,遇到 indexer workder failed 错误