gpt4 book ai didi

Node.js 加密货币使用 tron 公共(public)地址创建 ecdh

转载 作者:太空宇宙 更新时间:2023-11-03 23:55:57 25 4
gpt4 key购买 nike

我的目标是使用 TronWeb.createAccount() 进行钱包地址加密。 ,我以 base58 形式获取钱包的公共(public)地址,并以十六进制形式获取私钥。

Sample Public Address: TPeGpPdJGQoNobV4SEjXLdrjefN3iCAAAA
Sample Private Key: 6B07B82D50B27171F35BF1DEAB14...

我使用以下代码获取 key 。

const TronWeb = require('tronweb');
function createAccount() {
try {
const tronWeb = new TronWeb(fullNode, solidityNode, eventServer);
return tronWeb.createAccount();

} catch (error) {
console.log(error);
throw error;
}
}

当我在 bob.createECDH() 中设置私钥后使用 getPublicKey() 方法时,代码工作正常,但实际上,当我在 bob 一侧时,我不会为 alice 使用 setPrivateKey() 方法。因此,我必须传递 base58 公共(public)地址,而不是两侧的 bob.getPublicKey() 或 alice.getPublicKey()。

const alice_secret = alice.computeSecret('HEX_PUBLIC_KEY','hex');

以下是加密和解密的完整代码。

const alice = crypto.createECDH('secp256k1');
const bob = crypto.createECDH('secp256k1');
bob.setPrivateKey("PRIVATE_KEY_FOR_BOB", "hex");
alice.setPrivateKey("PRIVATE_KEY_FOR_ALICE", "hex");

const alice_secret = alice.computeSecret(bob.getPublicKey());
console.log("alice's shared Key: " + alice_secret.toString('hex') + "\n");

var algo = 'aes-256-ecb', plainText = "Some secret to share bob";
var cipher = crypto.createCipher(algo, alice_secret)
var encrypted = cipher.update(plainText, 'utf8', 'hex')
encrypted += cipher.final('hex');
console.log("Encrypted: " + encrypted);

const bob_secret = bob.computeSecret(alice.getPublicKey());
console.log("bob's shared Key: " + bob_secret.toString('hex') + "\n");

var decipher = crypto.createDecipher(algo, bob_secret)
var decrypted = decipher.update(encrypted, 'hex', 'utf8')
decrypted += decipher.final('utf8');
console.log("Decrypted: " + decrypted);

if (plainText == decrypted) {
console.log("ECDH Success")
}

当我使用 setPrivateKey() 然后使用 getPublicKey() 时,输出是预期的

alice's shared Key: 238c3eba08585a5cae1006710c79fe2de329545e9ca4c1ef719c53b55eb337b6
app.js:21 Encrypted: 44184052d9e205fd855aaf5f30b5f186c4bab88a5cfdce58d99cd8c696954c8dd5676807e6fe372fbe3ca5b230e54293
app.js:29 bob's shared Key: 238c3eba08585a5cae1006710c79fe2de329545e9ca4c1ef719c53b55eb337b6
app.js:35 Decrypted: QmdUuJDvgZ7EWEpJmEcFCoYwotn9CHyvK4qEhZs82AhZoQ
app.js:40 ECDH Success

当我使用 bs58 或任何其他包将公钥转换为十六进制时,它会显示

UnhandledPromiseRejectionWarning: Error: Failed to translate Buffer to a EC_POINT

有没有办法转换这个公共(public)地址并在这种情况下使用它?

最佳答案

我必须研究 ECDH 支持的 key 格式并根据新格式重新生成 key 才能解决此问题。我们可以使用两种格式的公钥来加密数据。

关于Node.js 加密货币使用 tron 公共(public)地址创建 ecdh,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57140623/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com