首页 > 区块链 > 区块链 > Go语言开发以太坊:密钥库
一个密钥库是包含加密的文件,钱包 私钥。在密钥库中去 - 复仇只能包含一个钱包每个文件的密钥对。要首先生成密钥库,您必须调用NewKeyStore给它提供目录路径以保存密钥库。之后,您可以通过调用向其传递密码进行加密的方法来生成新的钱包。每次调用时,它将在磁盘上生成一个新的密钥库文件。NewAccountNewAccount
这是生成新密钥库帐户的完整示例。
ks := keystore.NewKeyStore("./wallets", keystore.StandardScryptN, keystore.StandardScryptP)password := "secret"account, err := ks.NewAccount(password)if err != nil {
log.Fatal(err)}fmt.Println(account.Address.Hex()) // 0x20F8D42FB0F667F2E53930fed426f225752453b3
现在,要导入密钥库,您基本上需要NewKeyStore像往常一样再次调用,然后调用Import将密钥库 JSON数据接受为字节的方法。第二个参数是用于对其进行解密以对其进行加密的密码。第三个参数是指定一个新的加密密码,但在示例中我们将使用相同的密码。导入帐户将使您能够按预期访问该帐户,但是它将生成一个新的密钥库文件!拥有两个相同的东西是没有意义的,因此我们将删除旧的东西。
这是导入密钥库并访问帐户的示例。
file := "./wallets/UTC--2018-07-04T09-58-30.122808598Z--20f8d42fb0f667f2e53930fed426f225752453b3"ks := keystore.NewKeyStore("./tmp", keystore.StandardScryptN, keystore.StandardScryptP)jsonBytes, err := ioutil.ReadFile(file)if err != nil {
log.Fatal(err)}password := "secret"account, err := ks.Import(jsonBytes, password, password)if err != nil {
log.Fatal(err)}fmt.Println(account.Address.Hex()) // 0x20F8D42FB0F667F2E53930fed426f225752453b3if err := os.Remove(file); err != nil {
log.Fatal(err)}
package mainimport ( "fmt"
"io/ioutil"
"log"
"os"
"github.com/ethereum/go-ethereum/accounts/keystore")func createKs() {
ks := keystore.NewKeyStore("./tmp", keystore.StandardScryptN, keystore.StandardScryptP)
password := "secret"
account, err := ks.NewAccount(password)
if err != nil {
log.Fatal(err)
}
fmt.Println(account.Address.Hex()) // 0x20F8D42FB0F667F2E53930fed426f225752453b3}func importKs() {
file := "./tmp/UTC--2018-07-04T09-58-30.122808598Z--20f8d42fb0f667f2e53930fed426f225752453b3"
ks := keystore.NewKeyStore("./tmp", keystore.StandardScryptN, keystore.StandardScryptP)
jsonBytes, err := ioutil.ReadFile(file)
if err != nil {
log.Fatal(err)
}
password := "secret"
account, err := ks.Import(jsonBytes, password, password)
if err != nil {
log.Fatal(err)
}
fmt.Println(account.Address.Hex()) // 0x20F8D42FB0F667F2E53930fed426f225752453b3
if err := os.Remove(file); err != nil {
log.Fatal(err)
}}func main() {
createKs()
//importKs()}
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69973838/viewspace-2693245/ ,如需转载,请注明出处,否则将追究法律责任。