我用salt实现了密码哈希,所以我将salt生成为二进制,对密码进行哈希,base64对密码进行编码,然后salt将它们存储到数据库中.
现在,当我判断密码时,我应该将salt解码回二进制数据,使用它对提供的密码进行哈希运算,对结果进行base64编码,并判断结果是否与数据库中的结果匹配.
问题是,我找不到一种方法将盐解码回二进制数据.我用缓冲区对它们进行了编码.toString方法,但似乎没有反向函数.
我用salt实现了密码哈希,所以我将salt生成为二进制,对密码进行哈希,base64对密码进行编码,然后salt将它们存储到数据库中.
现在,当我判断密码时,我应该将salt解码回二进制数据,使用它对提供的密码进行哈希运算,对结果进行base64编码,并判断结果是否与数据库中的结果匹配.
问题是,我找不到一种方法将盐解码回二进制数据.我用缓冲区对它们进行了编码.toString方法,但似乎没有反向函数.
As of Node.js v6.0.0使用the constructor method has been deprecated和以下方法从base64编码的字符串构造新缓冲区:
var b64string = /* whatever */;
var buf = Buffer.from(b64string, 'base64'); // Ta-da
For Node.js v5.11.1 and below
建造一个新的Buffer
和pass 'base64'
as the second argument:
var b64string = /* whatever */;
var buf = new Buffer(b64string, 'base64'); // Ta-da
如果你想保持清洁,你可以判断from
是否存在:
if (typeof Buffer.from === "function") {
// Node 5.10+
buf = Buffer.from(b64string, 'base64'); // Ta-da
} else {
// older Node versions, now deprecated
buf = new Buffer(b64string, 'base64'); // Ta-da
}