gpt4 book ai didi

python - Python 的 pbkdf2_sha256.verify 的 NodeJS 实现

转载 作者:太空宇宙 更新时间:2023-11-03 15:42:52 26 4
gpt4 key购买 nike

我必须将这段 Python 代码翻译成 NodeJS:

from passlib.hash import pbkdf2_sha256
pbkdf2_sha256.verify('12345678', '$pbkdf2-sha256$2000$8R7jHOOcs7YWImRM6V1LqQ$CIdNv8YlLlCZfeFJihZs7eQxBsauvVfV05v07Ca2Yzg')
>> True

上面的代码是完整的代码,即没有其他参数/​​设置(只需运行 pip install passlib,然后再运行它以安装 passlib 包)。

我正在寻找 Node 中 validatePassword 函数的正确实现,它将通过这个积极的实现测试:

validatePassword('12345678', '$pbkdf2-sha256$2000$8R7jHOOcs7YWImRM6V1LqQ$CIdNv8YlLlCZfeFJihZs7eQxBsauvVfV05v07Ca2Yzg')
>> true

这是 passlib.hash.pbkdf2_sha256 的 documentation 及其默认参数值。

我尝试使用上述 Python 代码中的数据来遵循 here 的答案,但该解决方案未通过测试。

我希望能为这个实现提供一些帮助(最好使用内置的 NodeJS crypto 包)。

提前谢谢你。

最佳答案

这会起作用:

const crypto = require('crypto')
function validatePassword(secret, format) {
let parts = format.split('$')
return parts[4] == crypto.pbkdf2Sync(secret, Buffer.from(parts[3].replace(/\./g, '+') + '='.repeat(parts[3].length % 3), 'base64'),
+parts[2], 32, parts[1].split('-')[1]).toString('base64').replace(/=/g, '').replace(/\+/g, '.')
}

关于python - Python 的 pbkdf2_sha256.verify 的 NodeJS 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51613990/

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