我想知道在我的节点.js应用程序中加密和解密文件时应该在哪个用例中使用这些方法。
问题所在
我想加密服务器中的一些文件,在询问其他人后,我意识到最推荐的方法是使用私钥加密这些文件(大型(。
现在,我正在寻找文档并看到了这些方法
-
crypto.publicEncrypt(pubKey, buffer)
-
crypto.publicDecrypt(pubKey, buffer)
-
crypto.privateEncrypt(privKey, buffer)
-
crypo.privateDecrypt(privKey, buffer)
这很令人困惑,因为我不知道我现在必须使用它们中的什么,啊......我不知道安全执行此操作的最合适方法是什么。
tl;dr 使用公钥加密。确保您的私钥安全。
不幸的是,这些方法的名称很差。 privateEncrypt
应该被称为sign
之类的东西,publicDecrypt
应该被称为verify
之类的东西。
使用公钥加密(也称为非对称加密(时,一个密钥可用于写入密码,另一个密钥可以撤消该操作。您的公钥可能为所有人所知,而您的私钥是秘密的。
如果要对某些内容保密,除了某个密钥的所有者之外,您希望使用其公钥加密消息。因此,如果爱丽丝想要接收加密消息,她将共享她的公钥A_pub
和她的密钥A_priv
,她会保持自己的状态。您将加密消息crypto.publicEncrypt(A_pub, buffer)
.然后,她将使用crypto.privateDecrypt(A_priv, buffer)
解密该消息。
以另一种方式执行此操作称为数字签名。