Sto eseguendo il porting su un sito Django su Node.js e sto cercando di implementare nuovamente il metodo della password di Django set in Node. Questo è il codice Djangopython (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)
ed ecco il codice Node.js che ho finora:
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);
});
La mia soluzione in Nodo non emette gli stessi risultati come il codice Python/Django. A questo punto sono praticamente sopra la mia testa e qualsiasi aiuto sarebbe molto apprezzato. Grazie in anticipo.
Il nodo utilizza HMAC + SHA1 e, per quanto posso vedere, non può essere modificato (mentre con Python è possibile utilizzare 'digest.sha1' anziché' digest.sha256', ma non sono sicuro che sia accettabile per voi). – robertklep
Sì, le mie password correnti sono state create con sha256. – imns
[cryptojs] (https://github.com/gwjjeff/cryptojs) supporta PBKDF2 con HMAC + SHA256 ma non produce ancora gli stessi risultati. Penso che Django usi la sua implementazione che non è abbastanza standard. – robertklep