【发布时间】: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