Go-Ethereum

如何從賬戶地址和密碼中獲取私鑰?

  • January 27, 2022

我有什麼

  1. 我可以使用 web3 api 的 personal.newAccount() 方法創建新帳戶。

  2. 我正在研究我的私有區塊鏈。

  3. geth 節點從以下命令開始:-

geth --datadir ~/privateBlockChain1 --networkid 1300 --rpcport 8002 --port 30301 --rpcapi="db,eth,net,web3,personal,admin,txpool,debug" --rpc --maxpeers 0 --nodiscover --targetgaslimit 110000000000 --dev --rpccorsdomain "*" --rpcaddr "127.0.0.1" console

  1. 我正在使用web3 api 和ethereumjs-wallet npm api。

  2. Keystore 文件成功儲存在私有區塊鏈目錄中。

我想要什麼

  1. 我想獲得各自賬戶的私鑰。

2.實際上,我想從我的nodejs端獲取各個帳戶的密鑰庫文件的所有數據,並且能夠保存在我的正常數據庫中。

案例1:

1.當我使用personal.newAccount()方法和密碼創建帳戶時,如何獲取私鑰,如果我有私鑰,那麼我將使用該密鑰通過以下程式碼獲取所有密鑰庫數據:—

  var Wallet = require('ethereumjs-wallet');  
   var Key=Buffer.from('account_privatekey','hex');  
   var wallet = Wallet.fromPrivateKey(Key);  
   var json=wallet.toV3String(user_define_password);  // it will return keystore object data. 

但我無法從帳戶地址和密碼中獲取實際的私鑰。

` 案例2:

1.假設我通過以下程式碼創建私鑰:-

    var Wallet = require('ethereumjs-wallet');  
       var privateKey=Wallet.generate(password)._privKey;  
       var wallet = Wallet.fromPrivateKey(privateKey);  
       var json=wallet.toV3String(password); // it will get keystore data      `
 2. account creation on my private blockchain this way   
          `  personal.importRawKey(key,password)  
         but error showing like , importRawKey not a function `

如何解決這些

我使用此程式碼從帳戶地址和密碼中恢復私鑰。首先,安裝 Keythereum:

npm install keythereum

Keythereum 是一個用於生成、導入和導出乙太坊密鑰的 JavaScript 工具。閱讀文件:GitHub 連結

這是我的程式碼:

var keythereum = require("keythereum");
var datadir = "/home/super/.ethereum/rinkeby";
var address= "0xc8096d713000002c77e4eb62f0000ead5f105a7e";
const password = "mypass";

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

如何從賬戶地址和密碼中獲取私鑰?

公鑰/私鑰密碼學的基本概念之一是您所描述的應該是不可能的。如果您可以從公共地址對私鑰進行逆向工程,那麼現有的任何加密系統都不會被信任。

所以不僅不可能,而且應該不可能


你說:

當我使用帶密碼的personal.newAccount()方法創建帳戶時,如何獲取私鑰,如果我有私鑰,那麼我將使用該密鑰通過以下程式碼獲取所有密鑰庫數據:—

您是否要求提供密鑰庫的目錄位置?如果是這樣,這可能會回答您的問題: Getting private keys of geth accounts

另見:https ://ethereum.gitbooks.io/frontier-guide/content/backup_restore.html

geth 持續存在的所有內容都寫入其數據目錄中(PoW Ethash DAG 除外,請參見下面的註釋)。預設數據目錄位置是特定於平台的:

  • Mac:~/圖書館/乙太坊
  • Linux:~/.ethereum
  • Windows:%APPDATA%/乙太坊

帳戶儲存在密鑰庫子目錄中。該目錄的內容應該可以在節點、平台、實現(C++、Go、Python)之間傳輸。

引用自:https://ethereum.stackexchange.com/questions/12830