Ich portiere über eine Django-Site zu Node.js und ich versuche, die Django-Set-Passwort-Methode in Node zu implementieren. Dies ist der Django CodePython (django) hashlib vs Nodejs crypto
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)
und hier ist der Node.js Code, den ich bisher habe:
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);
});
Meine Lösung in Knoten nicht ausgibt die gleichen Ergebnisse wie der Python/Django-Code. An diesem Punkt bin ich ziemlich über meinen Kopf und jede Hilfe würde sehr geschätzt werden. Danke im Voraus.
Knoten verwendet HMAC + SHA1, und soweit ich sehen kann, kann das nicht geändert werden (während mit Python können Sie 'Digest.sha1' anstelle von' Digest.sha256' verwenden, aber ich bin mir nicht sicher, ob das ist akzeptabel für Sie). – robertklep
Ja, meine aktuellen Passwörter wurden mit sha256 erstellt. – imns
[cryptojs] (https://github.com/gwjjeff/cryptojs) unterstützt PBKDF2 mit HMAC + SHA256, führt aber immer noch nicht zu den gleichen Ergebnissen. Ich denke Django verwendet eine eigene Implementierung, die nicht ganz Standard ist. – robertklep