डेटाबेस में हैश को हेक्स स्ट्रिंग के रूप में संग्रहीत करना मेरे लिए ठीक काम करता है (उन्हें String
में 'कच्चा' संग्रहीत करना या एक Buffer
संपत्ति नहीं है):
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'));
});
});
});
});
(वैसे, दोनों crypto.pbkdf2
और crypto.randomBytes
समकालिक समकक्ष हैं)