【问题标题】:How to find hashed value in MongoDB?如何在 MongoDB 中找到哈希值?
【发布时间】:2018-01-05 12:40:00
【问题描述】:

我在 nodeJS 中使用mongoose 库。我想在plaintext 中传递密码,并匹配它的哈希值,以在集合中找到一个元素。

例如,在mysql,我可以使用:

SELECT * FROM TABLENAME WHERE MD5(PASSWORD) = "HASHED_PASSWORD";

mysql 有一个MD5() 函数。

mongoDB有类似的吗?

我知道密码应该在存储之前进行哈希处理,但只是想知道这在 MongoDB 中是否可行

【问题讨论】:

  • 如何创建一个辅助函数将明文转换为哈希然后在 mongo 中查找?
  • @FadiAboMsalam:在这种情况下,mongodb 存储明文密码,而不是哈希。

标签: mongodb mongoose mongodb-query


【解决方案1】:

目前从 MongoDB 3.6.1 开始,没有您描述的内置哈希函数。在大多数情况下,哈希函数在您的应用程序中实现得更好。

考虑您在上面发布的场景。已知 MD5 很弱。如果您的应用程序依赖于数据库来计算此哈希值,那么现在您将面临一些问题:

  1. 需要对数据库进行重大更改才能将所有弱散列迁移到新散列。否则,您将面临必须保留不同版本的架构的问题,这可能并不理想。
  2. 您不能简单地将数据库中的 hash() 函数替换为更强的函数并保持函数名称相同,因为这会导致与已存储的哈希不兼容。

如果您在应用程序中保留哈希函数,您仍然可以使用相同的数据库和数据结构。您可以使用新算法以不同方式存储哈希(例如,使用详细说明所使用算法和哈希字符串的子文档,而不是单个字符串),并让应用程序检测要使用的算法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-07
    • 2018-04-07
    • 2012-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-04
    • 2011-08-27
    相关资源
    最近更新 更多