我在nodeJS中使用mongoose
库。我想在plaintext
中传递密码,并匹配它的散列值,以便在集合中找到一个元素。
例如,在mysql
中,我可以使用:
SELECT * FROM TABLENAME WHERE MD5(PASSWORD) = "HASHED_PASSWORD";
mysql
具有MD5()
功能。
mongoDB有类似之处吗?
我知道密码应该在存储之前进行哈希处理,但只是想知道MongoDB中是否可以使用
答案 0 :(得分:0)
目前,从MongoDB 3.6.1开始,没有像您所描述的内置哈希函数。在大多数情况下,哈希函数可以在您的应用程序中更好地实现。
考虑您在上面发布的方案。已知MD5很弱。如果您的应用程序依赖于数据库来计算此哈希值,那么现在您遇到了一些问题:
hash()
函数,并保持函数名称相同,因为这会与已存储的哈希值产生不兼容。如果在应用程序中保留哈希函数,仍然可以使用相同的数据库和数据结构。您可以使用新算法以不同方式存储哈希值(例如,使用详细说明所使用算法的子文档和哈希字符串,而不是单个字符串),并让应用程序检测要使用的算法。