我想将bcrypt.compare与mongoose / mongo引擎搜索一起使用

问题描述 投票:0回答:1

考虑此代码:

const hashPassword = function(plainText) {
  return crypto
    .createHmac(process.env.Secret_hash_Password, "secret key")
    .update(plainText)
    .digest("hex");
};

您可能已经注意到,这是使用crypto的简单哈希函数。

现在考虑此代码摘录:

bcrypt.compare(password, user.password, (err, isMatch) => {....}

您可能已经注意到,这是使用bcryptjs进行比较的简单哈希函数。

我相信每个人都会同意,第二个是最安全的

现在考虑问题:

[我有一个要存储在mongo上的密钥,并且此密钥是敏感信息,因此,我决定对其进行哈希处理,以便没人能对其进行解密。此密钥用于进行mongo搜索,这是仅用户拥有的信息,一种密码。

Solution:使用第一个代码,尽管如此,您仍然无法解密,如果输入相同,则可以获得相同的哈希结果。

问题:我的解决方案是使用众所周知的易被黑客入侵的技术,某人只需要输入多个输入,一旦获得相同的输出,他们就可以了!这是我的解决方案的一个众所周知的缺陷。

所需解决方案:将第二个代码与mongo一起使用。

Discussion:我可以简单地使用find({})获取所有数据库信息,并应用ForEachbcrypt.compare,尽管如此,我从我的研究中知道mongo已针对搜索进行了优化,例如他们使用索引。能够将bcrypt.compare作为自定义函数传递给mongo搜索引擎会很好。

任何建议,评论或其他内容?

PS。我正在使用猫鼬。

考虑此代码:const hashPassword = function(plainText){return crypto .createHmac(process.env.Secret_hash_Password,“ secret key”).update(plainText).digest(“ hex”); };当您...

mongodb encryption mongoose bcrypt cryptojs
1个回答
0
投票

您的关注:

© www.soinside.com 2019 - 2024. All rights reserved.