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

Posted

技术标签:

【中文标题】如何在 Meteor React 中加密和解密客户端上的数据?【英文标题】:How can I encrypt and decrypt data on client in Meteor React? 【发布时间】:2022-01-03 21:43:56 【问题描述】:

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

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

我曾尝试使用planifica:encryption,因为它正是我们项目所需的,但我遇到了一些错误,我无法绕过它们,也找不到任何关于它们的文章。我在类似问题的一些答案中听说过Mylar,但 Mylar 和 Planifica 似乎已经有几年没有更新了。我知道 Node.js 有一个加密模块,但我不确定它是否可以用来在用户之间共享加密数据,最重要的是,如何做到这一点。

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

感谢您的阅读!

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

非常感谢您的帮助。我今天在一个演示项目上试了一下,到目前为止它看起来很有希望。解密密钥的分发根本不会由应用程序处理,所以这不是问题。再次感谢您的宝贵时间

以上是关于如何在 Meteor React 中加密和解密客户端上的数据?的主要内容,如果未能解决你的问题,请参考以下文章

Angular、React 和 Blaze(客户端 Meteor)之间的主要设计差异? [关闭]

Meteor + React:服务器端路由?

如何在没有 SSL/TLS 的情况下加密数据客户端并在另一个客户端解密?

如何在数据库中存储加密的机密用户信息,需要在运行时解密?

加密中 公钥和私钥如何获得?

如何从服务器端加密数据并将其传递到客户端(javascript)并解密和使用它