如何解密keystore檔案
如果你用 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, ) }
程式碼極其簡單,就不用多做解釋了,收工!