Web3js

如何使用 NodeJS 隱藏簽名 trnx 的私鑰?

  • May 14, 2021

當我在網站上簽署交易時,我使用 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 一起 ;)

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