gpt4 book ai didi

javascript - 在 Node 6 中使用 crypto.pbkdf2Sync 返回与 Node 4 不同的散列

转载 作者:搜寻专家 更新时间:2023-11-01 00:29:56 27 4
gpt4 key购买 nike

我们正在尝试将我们当前的项目 nodeJS 版本 (4.2.4) 升级到最新版本 (6.9.1),我们遇到了这样的问题,我们有一些关于用户密码的身份验证方法,它执行如下操作:

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

this.password 是在 Node 4.2.4 上工作的用户密码哈希,并且密码是用户输入的,

自从我们升级到 Node 6.9.1 后,它停止工作并返回 false,而在 Node 4.2.4 中它返回 true

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

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

  • 请注意,在 Node 5 中,它照常工作,无需更改代码

最佳答案

您需要将代码更改为:

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

从 Node 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

关于javascript - 在 Node 6 中使用 crypto.pbkdf2Sync 返回与 Node 4 不同的散列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40378105/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com