Stocker le hachage sous forme de chaîne hexadécimale dans la base de données fonctionne bien pour moi (les stocker "bruts" dans une String
ou un Buffer
la propriété ne le fait pas) :
var crypto = require('crypto');
var mongoose = require('mongoose');
var client = mongoose.connect('mongodb://localhost/test');
var UserSchema = new mongoose.Schema({
salt : String,
hash : String
});
var User = mongoose.model('User', UserSchema);
hash('secret', function(err, salt, key) {
new User({ salt : salt, hash : key.toString('hex') }).save(function(err, doc) {
User.findById(doc._id, function(err, doc) {
hash('secret', doc.salt, function(err, key) {
console.log('eq', doc.hash === key.toString('hex'));
});
});
});
});
(au fait, les deux crypto.pbkdf2
et crypto.randomBytes
avoir des homologues synchrones)