我正在为 express.js 和 postgresql db 编写网站的安全性。现在我一直在阅读有关加盐和散列的内容,并且我使用加密模块使用 pdkdf2 设置了代码,但我的问题是如何在数据库中构建帐户表。如果我要创建一个登录角色,该角色将具有 MD5 加密格式的密码,该密码将是从 salt n 哈希“过程”派生的密钥。这会不会是过度保护?
将有一个表如下:UID(来自登录角色的 ID)、SALT、HASH。还有登录角色。
因此,在尝试进行身份验证时,代码将尝试以该角色身份登录,首先通过获取关联的 UID,为提供的密码生成 salt n 哈希密码,并在数据库级别进行身份验证。
希望我有点道理..
var usrSalt = crypto.randomBytes('128').toString('base64');
//text , salt ,iterations , keylen , callback
crypto.pbkdf2(usr, usrSalt, 10000, 512, function (err, derivedKey) {
if (err) { console.log(err); }
else {
usr = derivedKey;
next();
}
});
PS pgcrypto 模块在同样的场景下会不会更好,只需删除 node.js 上的代码。