NodeJS:如何将base64编码的字符串解码回二进制?

时间:2013-01-28 23:13:16

标签: node.js encoding base64 decoding

我正在使用salt实现密码哈希,所以我生成了salt作为二进制文件,哈希密码,base64编码密码和salt然后将它们存储到数据库中。

现在当我检查密码时,我应该将盐解码回二进制数据,用它来散列提供的密码,base64编码结果并检查结果是否与数据库中的结果匹配。

问题是,我找不到将盐解码为二进制数据的方法。我使用Buffer.toString方法对它们进行编码,但似乎没有反向函数。

1 个答案:

答案 0 :(得分:494)

使用the constructor method has been deprecated从Node.js v6.0.0 开始,以下方法应该用于从base64编码的字符串构造新的缓冲区:

var b64string = /* whatever */;
var buf = Buffer.from(b64string, 'base64'); // Ta-da

对于Node.js v5.11.1及更低版本

构建新的Bufferpass '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
}