我的同事有一个存储账户信息的数据库;账户的SHA256哈希密码和盐值以二进制数据(blob)的形式存储在列中。
使用以下PHP代码(true表示原始输出)对密码进行哈希:
我正在尝试在Node.js服务器上实现身份验证,必须从PHP获取与数据库中存储的相同的哈希密码,但似乎无法正常工作。
使用以下PHP代码(true表示原始输出)对密码进行哈希:
hash("sha256", $salt . $password, true);
我正在尝试在Node.js服务器上实现身份验证,必须从PHP获取与数据库中存储的相同的哈希密码,但似乎无法正常工作。
/**
* Validates a password sent by an end user by comparing it to the
* hashed password stored in the database. Uses the Node.js crypto library.
*
* @param password The password sent by the end user.
* @param dbPassword The hashed password stored in the database.
* @param dbSalt The encryption salt stored in the database.
*/
function validatePassword(password, dbPassword, dbSalt) {
// Should the dbSalt be a Buffer, hex, base64, or what?
var hmac = crypto.createHmac("SHA256", dbSalt);
var hashed = hmac.update(password).digest('base64');
console.log("Hashed user password: " + hashed);
console.log("Database password: " + dbPassword.toString('base64'));
return hashed === dbPassword;
}