相关疑难解决方法(0)

python(django)hashlib vs Nodejs crypto

我正在将Django站点移植到Node.js,我正在尝试在Node中重新实现Django set password方法.这是Django代码

from django.utils.crypto import (
    pbkdf2, get_random_string)

import hashlib

password = 'text1'
algorithm = "pbkdf2_sha256"
iterations = 10000
salt = 'p9Tkr6uqxKtf'
digest = hashlib.sha256
hash = pbkdf2(password, salt, iterations, digest=self.digest)
hash = hash.encode('base64').strip()
print "%s$%d$%s$%s" % (self.algorithm, iterations, salt, hash)
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止的Node.js代码:

var password = 'text1';
var hashed = crypto.createHash('sha256').update(password, 'utf8').digest();
var salt = 'p9Tkr6uqxKtf';
var algorithm = "pbkdf2_sha256";
var iterations = 10000;
crypto.pbkdf2(hashed, salt, iterations, 32, function(err, encodedPassword) {
    var newPass = new Buffer(encodedPassword).toString('base64');
    console.log(encodedPassword);

    // console.log(Buffer(encodedPassword, 'binary').toString('hex')); …
Run Code Online (Sandbox Code Playgroud)

python django hashlib node.js passport.js

10
推荐指数
1
解决办法
1853
查看次数

Python 的 pbkdf2_sha256.verify 的 NodeJS 实现

我必须将这个 Python 代码翻译为 NodeJS:

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

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

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

validatePassword('12345678', '$pbkdf2-sha256$2000$8R7jHOOcs7YWImRM6V1LqQ$CIdNv8YlLlCZfeFJihZs7eQxBsauvVfV05v07Ca2Yzg')
>> true
Run Code Online (Sandbox Code Playgroud)

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

我尝试使用上面的 Python 代码中的数据来遵循此处的答案,但该解决方案没有通过测试。

我希望获得有关此实现的一些帮助(最好使用内置 NodeJScrypto包)。

先感谢您。

python cryptography sha256 pbkdf2 node.js

6
推荐指数
1
解决办法
1870
查看次数

标签 统计

node.js ×2

python ×2

cryptography ×1

django ×1

hashlib ×1

passport.js ×1

pbkdf2 ×1

sha256 ×1