Dai*_*ail 1 openssl cryptography public-key-encryption node.js
我知道非对称加密是如何工作的。我知道有两把钥匙(一把私人钥匙和一把公共钥匙)。
当有人想要通信时,他们用这些公钥交换他们的公钥加密消息,然后相应的消息只能由拥有私钥的用户解密。
现在,我正在使用 Node.js,我需要做这样的事情......
我需要一个应用程序,每个小时读取数据库,提取数据并将其保存到我需要发送到另一台服务器的文件中。
我的问题是我不希望该文件对其他人可见,我使用 SSH 进行传输,因此没有问题,但我必须加密该文件,因为我不是该服务器的管理员,所以也许有人可以阅读它. 不幸的是,两台服务器的管理员都是一样的。所以我的想法是用公钥加密文件,然后只有拥有私钥的人(我)才能解密它。
我认为使用以下内容毫无意义:
var key = 'blablabla'
Run Code Online (Sandbox Code Playgroud)
如果我使用公钥,没有问题,所有人都可以阅读它......它确实是公共的。但是有了这个公钥,没有人可以解密消息,所以它有点像单向加密。
现在,有人可以告诉我是否需要签名者/验证者来完成这项工作,或者我可能必须使用 openssl 生成两个密钥(公共/私有)并将这些密钥传递给密码/解密器?
我在看加密模块,但没有例子......
一般来说,您的想法是正确的 - 您使用公钥加密并使用您的私钥解密。然而,实际上该程序更复杂。生成随机对称密钥并使用该密钥加密数据。然后使用公钥加密随机密钥。加密密钥与加密数据一起发送给接收者。另一方面,使用私钥解密加密密钥,然后解密数据。
您可以使用 OpenPGP 密钥或 X.509 证书来完成这项工作。
在 OpenPGP 的情况下,标准提供加密和解密作为原子过程(在用户级别)。对于 X.509 证书,您需要使用 PKCS#7 / CMS。
OpenSSL 库提供与 PKCS#7 / CMS 的操作,但是当我查看 OpenSSL 的 nodeJS API 时,该 API 非常有限并且不公开这些功能。也许您可以编写自己的 nodeJS 模块,该模块将与 OpenSSL 交互并提供缺失的功能。
另一种选择是使用 OpenPGP 密钥和node-gpg模块。该模块使用 gnupg 来完成实际工作,因此必须安装 gnupg。
不幸的是,我在 nodeJS wiki 中提供的第 3 方模块列表中没有看到任何其他合适的库。
| 归档时间: |
|
| 查看次数: |
1928 次 |
| 最近记录: |