我必须将此 Python 代码翻译为 NodeJS:
from passlib.hash import pbkdf2_sha256
pbkdf2_sha256.verify('12345678', '$pbkdf2-sha256$2000$8R7jHOOcs7YWImRM6V1LqQ$CIdNv8YlLlCZfeFJihZs7eQxBsauvVfV05v07Ca2Yzg')
>> True
上面的代码是完整的代码,即没有其他参数/设置(只需运行pip install passlib
在运行它来安装之前passlib
包裹)。
我正在寻找正确的实施validatePassword
Node 中将通过此积极实施测试的函数:
validatePassword('12345678', '$pbkdf2-sha256$2000$8R7jHOOcs7YWImRM6V1LqQ$CIdNv8YlLlCZfeFJihZs7eQxBsauvVfV05v07Ca2Yzg')
>> true
这里是文档 http://passlib.readthedocs.io/en/stable/lib/passlib.hash.pbkdf2_digest.html#interfacepasslib.hash.pbkdf2_sha256 及其默认参数值。
我试图遵循以下答案here https://stackoverflow.com/questions/17544537/django-pbkdf2-sha256-js-implementation使用上面Python代码中的数据,但该解决方案没有通过测试。
我希望获得有关此实现的一些帮助(最好使用内置 NodeJScrypto
包裹)。
先感谢您。
这会起作用:
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, '.')
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)