如何從賬戶地址和密碼中獲取私鑰?
我有什麼
我可以使用 web3 api 的 personal.newAccount() 方法創建新帳戶。
我正在研究我的私有區塊鏈。
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
我正在使用web3 api 和ethereumjs-wallet npm api。
Keystore 文件成功儲存在私有區塊鏈目錄中。
我想要什麼
- 我想獲得各自賬戶的私鑰。
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)之間傳輸。