我正在使用本机 mongodb-driver 从数据库进行插入和读取。我正在使用以下方法创建盐和密码哈希。
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;
});
现在在另一个函数中,我将这个盐和密码哈希存储到数据库中,如下所示
db.collection('user').insert(
{
salt: salt
, hashedPassword : passwordHash
}, {w:1}, callback);
salt 和 hashedPassword 以二进制类型存储在 mongo-db 数据库中。我想知道它以二进制而不是字符串存储是否很好? 我的担心是由于 node.js 声明二进制数据正在贬值,因此不推荐。
如果有的话,在mongodb中以二进制形式存储有什么好处,在mongodb中以字符串形式存储有什么好处。我应该更喜欢哪一个?如果字符串比以二进制存储更好,那么我如何确保将这两件事作为字符串存储在数据库中?