使用加密.节点6中的pbkdf2Sync返回的哈希值与节点4中的不同

using crypto.pbkdf2Sync in node 6 return different hash then node4

本文关键字:节点 哈希值 返回 加密 中的 pbkdf2Sync      更新时间:2023-09-26

我们正在尝试将我们当前的项目nodeJS版本(4.2.4)升级到最新版本(6.9.1),我们遇到了这样的问题,我们有一些用户密码的认证方法,它做了这样的事情:

    return this.password === crypto.pbkdf2Sync(password, this.salt, 10000, 64).toString('base64');

。Password是在节点4.2.4和密码为用户输入,

升级到节点6.9.1后,它停止工作并返回false,而在节点4.2.4中它返回true

我们已经尝试添加任何摘要选项(因为现在它是必需的),但没有找到匹配

的选项。

也许我们应该改变更多的东西?有人能帮忙吗?

  • 注意,在Node 5中,它可以正常工作,无需更改代码

您需要将代码更改为:

crypto.pbkdf2Sync(password, new Buffer(this.salt, 'binary'), 10000, 64).toString('base64');

从节点6的默认盐不是二进制

您还需要添加摘要,例如:

crypto.pbkdf2Sync(password, new Buffer(this.salt, 'binary'), 10000, 64, 'DSA-SHA1').toString('base64')

查看API:https://nodejs.org/api/crypto.html crypto_crypto_pbkdf2sync_password_salt_iterations_keylen_digest