Encryption 在Node.JS中加密和解密持久数据的最佳方法?

Encryption 在Node.JS中加密和解密持久数据的最佳方法?,encryption,node.js,Encryption,Node.js,我正在编写一个Node.JS应用程序,它将聊天日志与其他一些用户信息一起存储到数据存储(即MongoDB)。我已经在使用bcrypt来存储用户密码的salt散列,所以这里介绍了我 加密持久数据的最佳方法是什么?我说的是敏感的用户数据,比如电话号码和聊天日志。如果我的数据库遭到破坏,我不希望这些信息可用 但是,我确实需要双向加密/解密,因为我需要能够使用纯文本值(即电话号码用于,聊天日志用于用户查看其旧消息) 我正在研究节点加密,但还没有找到任何以性能/实时方式实现这一点的示例 更新:我应该提到,

我正在编写一个Node.JS应用程序,它将聊天日志与其他一些用户信息一起存储到数据存储(即MongoDB)。我已经在使用bcrypt来存储用户密码的salt散列,所以这里介绍了我

加密持久数据的最佳方法是什么?我说的是敏感的用户数据,比如电话号码和聊天日志。如果我的数据库遭到破坏,我不希望这些信息可用

但是,我确实需要双向加密/解密,因为我需要能够使用纯文本值(即电话号码用于,聊天日志用于用户查看其旧消息)

我正在研究节点加密,但还没有找到任何以性能/实时方式实现这一点的示例


更新:我应该提到,聊天“日志”实际上是完整的对话,当用户加入时,这些对话会被实时推送到“聊天室”(即,他们可以看到整个聊天历史,或者至少是其中的一个子集)。因此,我需要能够非常快速地进行加密和解密(如果不是实时的,至少需要某种工作进程)。

最好的方法是使用


但是,您需要将其移植到客户端。祝你好运。(使用browserify应该不会太难)

在服务器端完成所有操作,如果在客户端完成,则需要公开加密密钥。

嗯,更好的做法是,只在服务器端使用它(并将明文发送到客户端,但使用https),或者在客户端使用它,使用browserify?看起来确实有不错的JS实现可用:不一定。使用带有PBKDF’ed密钥的公钥方案或Diffie-helman方案将允许浏览器客户端下载受密码保护的私钥和加密数据,并完全在客户端解密。不幸的是,这里找到了一种在本地“存储”私钥的方法。可以使用PersistJS之类的东西,这样私钥只向所有者公开,但确保在会话到期后清理私钥成为一个棘手的部分。仍然可以通过将密钥变量写入firebug之类的控制台来访问私钥。如果它们存储在浏览器存储中,也可以查询它们。当然可以,但如果用户看到自己的私钥也没关系,就像您可以
cat~/.ssh/id\u rsa
查看私钥一样。