WEB3 |使用公共地址导入私钥
Posted
技术标签:
【中文标题】WEB3 |使用公共地址导入私钥【英文标题】:WEB3 | Import Private key with Public Address 【发布时间】:2018-06-27 04:13:25 【问题描述】:我用一些命令创建了几个帐户personal.newAccount()
并且创建的帐户被推送到列表中。
我想要做的是,出于安全原因,使用getAccount()
函数获得的公钥获取私钥。
我不想显示我的所有者地址和公钥,所以我想使用该函数从列表中获取地址。
web3.eth.getAccounts();
//["0x407d73d8a49eeb85d32cf465507dd71d507100c1"]
然后,我想像下面这样获取具有该地址的私钥。
var publicKey = web3.eth.getAccounts();
var privateKey = extractPrivateKey(pulicKey);
有没有办法使用 web3 来做到这一点?
有什么方法可以访问 javascript 文件上的密钥库吗?
我必须在 javascript 代码中使用 sendTransaction()
函数,但它需要 privateKey 才能签名。现在我将 privateKey 存储为静态的,我认为这很危险。
我想在代码中隐藏我的所有者公钥和私钥。如果有人有好主意,请告诉我。太感谢了。
【问题讨论】:
【参考方案1】:首先,var publicKey = web3.eth.getAccounts();
这行代码不会返回您的公钥,而是返回一个地址数组。
您可以使用 npm 包 keythereum。
它通过传递特定地址从您的密钥库文件中提取私钥。首先使用importFromFile
函数导入,然后使用recover
函数提取私钥。
看起来像这样:
var keystorePath = "/yourPathToTheKeystoreFile";
async function importPrivateKey(address)
let methodName = ">>> [importPrivateKey]: ";
try
var keyObject = await keythereum.importFromFile(address, keystorePath);
var privateKey = await keythereum.recover(password, keyObject);
return privateKey;
catch(e)
console.log(e);
throw e;
现在您可以直接在任何其他函数中调用此函数,并将提取的私钥直接用作sendTransaction
函数的新参数,而无需将私钥存储在任何变量中。
【讨论】:
以上是关于WEB3 |使用公共地址导入私钥的主要内容,如果未能解决你的问题,请参考以下文章