怎么取到geth私钥?

in #cn6 years ago (edited)

怎么取到geth的帐号私钥?

需要用web3js发送交易,但是代码中签名时需要私钥

var tx = new Tx(rawTx);
tx.sign(privateKey);

私钥在哪呢?用geth创建帐号时是在控制台 personal.newAccount 创建的,只输入了密码。

不过想想也是,不可能从geth控制台得到私钥了,那样也太不安全了,网上已经出现很多geth rpc调用的安全问题了。

找到以下方法:

先安装keythereum

(env3) localhost:web3eth Chaim$ npm install keythereum

安装中出现错误
npm WARN checkPermissions Missing write access to /Users/Chaim/Documents/workspace/ethereum/web3eth/node_modules/crypto-js
试了网上几种方法,也有可能是这个目录后来建立了,再安装成功了

找到geth的安装目录,有个keystore目录,里面有帐号信息,我的如下:

(env3) Chaim:keystore Chaim$ ls
UTC--2017-12-28T07-58-59.813492000Z--54b865714068f5f03574ace39a1f3279c4e83e2c
UTC--2017-12-28T08-06-51.271541000Z--469f07278600b1cb031448fd25f187f24a89ecb6
UTC--2017-12-28T15-51-18.824872000Z--068a7a0022a0e20d78682f39aa75547a0a260a2a
UTC--2018-01-26T09-24-23.810097000Z--823e1c4acbfc6527a6210e9bb9b4d5a45dc9c9a4

执行以下js代码:

var keythereum = require("keythereum");
var datadir = "/Users/Chaim/Documents/workspace/ethPri";
var address= "0x54b865714068f5f03574ace39a1f3279c4e83e2c";
const password = "123456";

var keyObject = keythereum.importFromFile(address, datadir);
var privateKey = keythereum.recover(password, keyObject);
console.log(privateKey.toString('hex'));

执行能打印出私钥信息。


感谢您阅读 @chaimyu 的帖子,期待您能留言交流!

Coin Marketplace

STEEM 0.17
TRX 0.16
JST 0.030
BTC 60181.64
ETH 2539.45
USDT 1.00
SBD 2.46