MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment stocker le crypto pbkdf2 dans mongoDB ?

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)