String 在mongodb中存储密码和密码哈希

String 在mongodb中存储密码和密码哈希,string,node.js,mongodb,binary,node-mongodb-native,String,Node.js,Mongodb,Binary,Node Mongodb Native,我使用本机mongodb驱动程序从数据库执行插入和读取操作。我使用以下方法创建salt和密码哈希 var salt; var passwordHash; crypto.randomBytes(256, function(ex, buf) { if (ex) throw ex; console.log('Have %d bytes of random data: %s', buf.length, buf); salt = buf; }); crypto.pbkdf2(user.pa

我使用本机mongodb驱动程序从数据库执行插入和读取操作。我使用以下方法创建salt和密码哈希

var salt;
var passwordHash;

crypto.randomBytes(256, function(ex, buf) {
  if (ex) throw ex;
  console.log('Have %d bytes of random data: %s', buf.length, buf);
  salt = buf;
});

crypto.pbkdf2(user.password, buf, 10000, 128, function(err, hashedPass){
    if (err) throw err;
    passwordHash = hashesPass;
});
现在在另一个函数中,我像这样将salt和passwordHash存储到数据库中

db.collection('user').insert(
    {
       salt: salt
     , hashedPassword : passwordHash
    }, {w:1}, callback);
salt和hashedPassword作为二进制类型存储在mongo db数据库中。我想知道的是,它是好的,它存储在二进制而不是字符串?我的担心是因为node.js声明二进制数据正在贬值,所以不建议这样做


在mongodb中以二进制形式存储有什么好处(如果有的话),在mongodb中以字符串形式存储有什么好处。我更喜欢哪一个?如果字符串比二进制存储更好,那么如何确保将这两个东西作为字符串存储在数据库中?

为了让您的生活更轻松,为什么不将它们存储为Base64编码的字符串?二进制将更紧凑一些,但我们这里讨论的是几个字节,而且密码加密相对来说比较昂贵,所以为什么要麻烦呢?utf-8呢?这有什么问题。二进制字符串是不推荐使用的,而不是缓冲区。使用缓冲区。如何在Mongodb中存储缓冲区?必须将其转换为要存储的字符串na?我认为mongodb中没有存储缓冲区的方法。