一般来说,您的想法是正确的 - 您使用公钥加密并使用您的私钥进行解密。然而,实际上程序更复杂。生成随机对称密钥,并使用该密钥加密数据。然后公钥用于加密随机密钥。加密密钥与加密数据一起发送给收件人。另一方面,使用私钥解密加密密钥,然后解密数据。
您可以使用OpenPGP密钥或X.509证书来完成工作。
在OpenPGP的情况下,标准提供加密和解密作为原子过程(在用户级别)。如果是X.509证书,则需要使用PKCS#7 / CMS。
OpenSSL库提供PKCS#7 / CMS的操作,但是当我查看用于OpenSSL的nodeJS API时,该API非常有限,并且不公开这些功能。也许你可以编写自己的nodeJS模块,它将与OpenSSL连接并提供缺少的功能。
另一种方法是使用OpenPGP密钥和 节点GPG 模块。该模块使用gnupg来完成实际工作,因此必须安装gnupg。
不幸的是,我没有在nodeJS wiki中提供的第三方模块列表中看到任何其他合适的库。