如何使用Hedera SDK中的`PrivateKey`和`PublicKey`来加密和解密数据?

问题描述 投票:0回答:1

我在 Hedera 创建了多个帐户, 并在 Hedera SDK 中提供其

PrivateKey
PublicKey
。 我可以使用它们在数据上创建签名, 并验证数据签名,因为 SDK 提供了执行这些操作的方法。

但是,我想对数据执行公钥加密/解密操作。 有推荐的方法吗?

注意:我知道SDK不提供这些方法。 因此,我愿意使用 NodeJs 中的

crypto
npm
依赖项, 只要它可以与 Hedera SDK 中的
PrivateKey
PublicKey
互操作即可。

hedera-hashgraph
1个回答
0
投票

设置是解决您的问题的关键部分。 如果与您的 Hedera 帐户关联的私钥是 ECDSA secp256k1, 那么你需要从

ECDH
创建一个
node:crypto
对象, 并用
PrivateKey
初始化它。

随后加密解密非常简单, 您只需要遵循

standard-ecies
中的 API, 它接受
ECDH
对象作为其关键表示。


设置

import crypto from 'node:crypto';
import ecies from 'standard-ecies';

const accountEcdh = crypto.createECDH('secp256k1');
accountEcdh.setPrivateKey(hederaSdkEcdsaPrivateKey.toBytesRaw());

加密

const clearBuffer = Buffer.from(clearData, 'utf8');
const encryptedBufer = await ecies.encrypt(accountEcdh.getPublicKey(), buffer, {});

解密

const decryptedBuffer = await ecies.decrypt(accountEcdh, encryptedBufer, {});
const decrypteData = Buffer.from(decryptedBuffer, 'utf8');
© www.soinside.com 2019 - 2024. All rights reserved.