我在 Hedera 创建了多个帐户, 并在 Hedera SDK 中提供其
PrivateKey
和 PublicKey
。
我可以使用它们在数据上创建签名,
并验证数据签名,因为 SDK 提供了执行这些操作的方法。
但是,我想对数据执行公钥加密/解密操作。 有推荐的方法吗?
注意:我知道SDK不提供这些方法。 因此,我愿意使用 NodeJs 中的
crypto
或 npm
依赖项,
只要它可以与 Hedera SDK 中的 PrivateKey
和 PublicKey
互操作即可。
设置是解决您的问题的关键部分。 如果与您的 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');