我想知道在哪种用例中,在我的node.js应用程序中加密和解密文件时应该使用这些方法。
我想对服务器中的某些文件进行加密,问了其他人之后,我意识到最推荐的方法是使用私钥对那些文件(大文件)进行加密。
现在,我正在寻找docs,并看到了这些方法
crypto.publicEncrypt(pubKey, buffer)
crypto.publicDecrypt(pubKey, buffer)
crypto.privateEncrypt(privKey, buffer)
crypo.privateDecrypt(privKey, buffer)
这非常令人困惑,因为我不知道我现在必须使用什么,嗯...我不知道安全地执行此操作的最合适方法是什么。
答案 0 :(得分:2)
tl; dr 使用公钥加密。保持私钥安全。
不幸的是,这些方法命名不当。 privateEncrypt
应该被称为sign
,而publicDecrypt
应该被称为verify
。
使用公钥加密(也称为非对称加密)时,可以使用一个密钥来编写密码,而另一个密钥可以撤消该操作。您的公开密钥可能是所有人都知道的,而您的私有密钥是秘密的。
如果要保守秘密,除了某个密钥的所有者以外,您想使用其公钥对邮件进行加密。因此,如果爱丽丝想要接收加密的消息,则她将共享她的公共密钥A_pub
和秘密密钥A_priv
,她将自己保密。.您将对消息crypto.publicEncrypt(A_pub, buffer)
进行加密。 。然后,她将使用crypto.privateDecrypt(A_priv, buffer)
解密该消息。
以另一种方式执行此操作称为digitial signature。