我如何在 Meteor React 中加密和解密客户端上的数据?

How can I encrypt and decrypt data on client in Meteor React?

我目前正在 Meteor React 中开发一个密码管理应用程序,似乎无法找到一种在客户端加密和解密数据的方法,MmongoDB 存储加密数据。

为任务添加一些背景知识并说明我要做什么: 整个应用程序仅适用于一家公司,用户仅为员工。密码以及用户名信息和一些其他属性存储在文件夹中,用户可以查看和编辑文件夹中的数据。密码(连同其他信息)需要加密,但多个用户需要能够根据赋予他们的权限访问它们。因此,当数据被加密时,比如当一个人创建密码时,其他有权这样做的用户也需要能够解密该数据。但是,解密需要在客户端进行,服务器只能访问加密数据。

我曾尝试在类似问题的一些答案中使用 planifica:encryption, because it has exactly what we need for our project, but I ran into some errors and I can't get past them nor find any article about them. I have heard of Mylar,但 Mylar 和 Planifica 似乎都几年没有更新了。我知道 Node.js 有一个加密模块,但我不确定它是否可以用于在用户之间共享加密数据,最重要的是,如何共享。

有什么方法可以满足我们对这个项目的需求吗?我还应该指出,我对流星比较陌生,而且我没有处理过任何加密,所以我的理解相当有限。

感谢阅读!

这在很大程度上取决于您使用的加密方式,但由于您对客户端解密感兴趣,所以听起来您正在寻找的是 SubtleCrypto web api

除了 Meteor 已经提供的功能之外,这应该就是您所需要的。您应该能够使用常规的流星收集和发布来与您的客户共享加密数据,然后让他们使用上面链接的解密函数对其进行解密。我想问的一个问题是,您如何能够在将解密密钥从服务器隐藏的同时为您的客户端获取解密密钥,但我假设您已经以某种方式弄清楚了这一部分。