Web3js
如何使用 NodeJS 隱藏簽名 trnx 的私鑰?
當我在網站上簽署交易時,我使用 Metamask 進行,我的私鑰是安全的。
現在我正在從 NodeJS 自動簽署交易,就像下一個程式碼一樣。
如果有人可以訪問伺服器,我可以以某種方式隱藏我的私鑰嗎?
const privateKey = 'my wallet secret private key'; const rawTransaction = { "to": 0x000000, "value": value, "gas": 100000 }; web3js.eth.accounts.signTransaction(rawTransaction, privateKey) .then(signedTx => web3js.eth.sendSignedTransaction(signedTx.rawTransaction)) .then(function(receipt){ console.log("Tranx Done!"); })
我認為這很難實現,因為即使您加密密鑰並將其保存在數據庫中,黑客也將能夠訪問數據庫並解密您的密鑰。但是你可以讓它變得更加困難。
**1.**您可以使用“crypto-js”包加密您的私鑰,並將其保存在外部文本文件中(在您項目的父文件夾中),然後在您的NODE腳本中恢復它。
然後您可以讀取該文件並解密密鑰以簽署您的交易。
它並不完美,但至少它有助於使它不那麼明顯。
也許這段程式碼可以幫助您加密和解密它。祝你好運。
var CryptoJS = require("crypto-js"); // Encrypt and save into a external file var cipherKey = CryptoJS.AES.encrypt('my private key', 'secret password').toString(); // Decrypt in your code var bytes = CryptoJS.AES.decrypt(cipherKey , 'secret password'); var privateKey= bytes.toString(CryptoJS.enc.Utf8); console.log(privateKey); //'mi private key'
**2.**您可以在外部環境變數中聲明您的私鑰,以防止您的密鑰在您的程式碼中被硬編碼並意外發送到 GitHub 或其他地方;)您可以將您的密鑰保存在項目目錄中的 .env 文件中,然後使用npm 包 dotenv讀取此文件
require('dotenv').config({ path: '/full/custom/path/to/your/env/vars' }) var yourKey= process.env.MYKEY;
.env文件
MYKEY=123abc
3. 1 和 2 一起 ;)