python(django)hashlib和Nodejs加密 [英] python (django) hashlib vs Nodejs crypto

查看:240
本文介绍了python(django)hashlib和Nodejs加密的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在将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)

这里是我迄今为止的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 (encodePassword);

// console.log(Buffer(encodedPassword,'binary')。toString('hex'));
var finalPass = algorithm +'$'+ iterations + '$'+ salt +'$'+ newPass;
console.log(finalPass);
});

我在Node中的解决方案不能输出与Python / Django代码相同的结果。在这一点上,我几乎在我的头上,任何帮助将非常感谢。感谢提前。

解决方案

这是一个更好的解决方案,使用 pbkdf2-sha256

  var pbkdf2 = require('pbkdf2-sha256'); 
var password ='text1';
var salt ='p9Tkr6uqxKtf';
var algorithm =pbkdf2_sha256;
var iterations = 10000;
var hashed = pbkdf2(password,new Buffer(salt),iterations,32).toString('base64');
var finalPass = algorithm +'$'+ iterations +'$'+ salt +'$'+ hashed;

上述代码应足以使用Node验证存储在Django中的密码。


I'm porting over a Django site to Node.js and I am trying to re implement the Django set password method in Node. This is the Django code

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)

and here's the Node.js code I have so far:

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'));
    var finalPass = algorithm +'$'+ iterations +'$'+  salt +'$'+  newPass;
    console.log(finalPass);
});

My solution in Node doesn't output the same results as the Python / Django code. At this point I'm pretty much over my head and any help would be very much appreciated. Thanks in advance.

解决方案

Here is a better solution using pbkdf2-sha256:

var pbkdf2 = require('pbkdf2-sha256');
var password = 'text1';
var salt = 'p9Tkr6uqxKtf';
var algorithm = "pbkdf2_sha256";
var iterations = 10000;
var hashed = pbkdf2(password, new Buffer(salt), iterations, 32).toString('base64');
var finalPass = algorithm +'$'+ iterations +'$'+  salt +'$'+  hashed;

The above code should be sufficient to validate passwords stored in Django using Node.

这篇关于python(django)hashlib和Nodejs加密的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆