【问题标题】:Mongodb find with encrypted dataMongodb 查找加密数据
【发布时间】:2021-07-22 08:45:41
【问题描述】:

我真正需要的是解密已经存储在 mongodb 中的电子邮件并找到完全匹配的文档。我正在做的是登录用户...让我们看看我的代码是什么:-

我的 MongoDB 集合:-

    {
    "_id" : ObjectId("608999124116b73cd4b3378d"),
    "firstName" : "U2FsdGVKHNnkmnUJBkjWphggtmRhMfhh/Fsz0uhzA=",
    "lastName" : "U2FsdGVkXJHBhbdHgjbJHW3Xi8YWKymfJYme6CZE=",
    "email" : "U2FsJHbgvJHbyhjbghbgfhkjnbKymfJYme6CZE=",
    "password" : "$2a$10$d3aV7oMRIs9lU7dBh3tNR.u5KduY95LkjrrX8l4GINKr4XHqFREb2",
    "userId" : "1caae2a9-eda6-49f7-8a22-40c7fa3c8920"
    },
    {
    "_id" : ObjectId("608999124116b73cd4b3378d"),
    "firstName" : "U2FsdGVKHNnkmnUJBkjWphggtmRhMfhh/Fsz0uhzA=",
    "lastName" : "U2FsdGVkXJHBhbdHgjbJHW3Xi8YWKymfJYme6CZE=",
    "email" : "U2FsJHbgvJHbyhjbghbgfhkjnbKymfJYme6CZE=",
    "password" : "$2a$10$d3aV7oMRIs9lU7dBh3tNR.u5KduY95LkjrrX8l4GINKr4XHqFREb2",
    "userId" : "1caae2a9-eda6-49f7-8a22-40c7fa3c8920"
    },
    

在服务器端 nodejs 中:-

var userTyped = req.body();
// userTyped = { "email":"example@email.com","password":"SOMETHING" }
var userData = await db.collection('users').findOne({email:userTyped.email});// Maybe I need to change something in here
sendToClientSide(userData);// Finded data send to user

我有一个返回解密数据的函数

    decryptData(data){
          // some code here 
          return decryptedData;
     }

我需要从数据库中找到用户数据,但是存储的数据是加密的,所以我需要解密数据库中的所有用户数据并找到最匹配的数据...如何在不解密所有用户的情况下获得准确的用户数据数据..?

当前代码的问题是我在 nodejs 中提到的电子邮件比较不起作用...

【问题讨论】:

  • 使用快速散列方法创建和存储用户电子邮件的无盐散列。然后,您可以使用相同的方法对输入电子邮件进行哈希处理并快速找到匹配项。如果您需要使用盐,请将其保存在秘密存储中,并对所有哈希使用相同的盐。
  • 感谢您的评论...真的很有帮助... :-)
  • @CharlesBamford 非常感谢。您能否将此评论更改为答案。如果可以,我会接受您的回答...

标签: javascript node.js database mongodb encryption


【解决方案1】:

如果不解压缩,就无法在压缩数据中进行搜索。

在这种情况下,我建议做相反的事情,编写一个函数,使用与加密 mongo 中的数据相同的方法来加密输入数据。

使用该方法或提供的任何其他唯一值加密电子邮件,并为您的集合中的该值执行find_one()

如果您向该字段添加索引,这也将发挥最佳效果,从而加快查询速度。

【讨论】:

    【解决方案2】:

    回复已经很晚了,但我对同样的事情进行了研究,Mongo 提出了字段级加密,让事情变得非常简单。还有一些 NPM 库可以帮助您,而不是为所有内容设置单独的函数。 也许这个链接会对你有所帮助。

    https://www.smallcase.com/blog/fle-mongodb-community-node-mongoose/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-19
      • 1970-01-01
      • 2015-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-24
      相关资源
      最近更新 更多