Javascript 我不知道';“我不明白。”;加密的;来自eccrypto库的对象

Javascript 我不知道';“我不明白。”;加密的;来自eccrypto库的对象,javascript,ecies,Javascript,Ecies,我正在学习JavaScript椭圆曲线密码库的基础知识。我从文档中获得了以下代码 var eccrypto=require(“eccrypto”); var privateKeyA=eccrypto.generatePrivate(); var publicKeyA=eccrypto.getPublic(privateKeyA); //正在为A加密消息。 eccrypto.encrypt(publicKeyA,Buffer.from(“msg to a”))。然后(函数(加密){ consol

我正在学习JavaScript椭圆曲线密码库的基础知识。我从文档中获得了以下代码

var eccrypto=require(“eccrypto”);
var privateKeyA=eccrypto.generatePrivate();
var publicKeyA=eccrypto.getPublic(privateKeyA);
//正在为A加密消息。
eccrypto.encrypt(publicKeyA,Buffer.from(“msg to a”))。然后(函数(加密){
console.log(加密)
//解密消息的过程。
解密(privateKeyA,加密)。然后(函数(明文){
log(“发送到A部分的消息:”,明文.toString());
});
});eccrypto(以及任何其他ECIES库)需要这些参数来解密数据。您可以在中阅读有关“集成加密方案”的更多信息。简言之,“iv”是初始化向量,它可以是一个随机缓冲区,也可以是您自己生成的一些特殊的东西。“ephemppublickey”是发送方的临时公钥缓冲区。“密文”是加密的消息缓冲区。最后,“mac”缓冲区有助于检查消息的完整性(校验和)


如果您想存储这些加密数据,可以将它们转换为十六进制或base64或任何适合您需要的字符串类型。例如,您可以使用
JSON.stringify(encrypted)
将此对象转换为JSON,然后按原样存储或将其转换为“base64”字符串以节省空间。另一个已经在其他一些库中应用的解决方案是将所有这些缓冲区集中在一个缓冲区中,如
buffer.concat(encrypted.ephemPublicKey,encrypted.iv,encrypted.ciphertext,encrypted.mac)。toString('base64')
现在,当您要解密此字符串时,应首先将其转换回缓冲区并拆分这些缓冲区。

您将加密文本作为函数的参数,在
中提供。然后(…)零件。