关于node.js:NodeJS:如何将base64编码的字符串解码回二进制?

NodeJS: How to decode base64 encoded string back to binary?

本问题已经有最佳答案,请猛点这里访问。

我用salt实现密码散列,所以我生成了二进制的salt,散列密码,base64编码密码,salt然后将它们存储到数据库中。

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

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


自node.js v6.0.0起,使用constructor方法的方法已被弃用,而应使用以下方法从base64编码字符串构造新的缓冲区:

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

对于node.js v5.11.1及以下版本

构造一个新的Buffer并将'base64'作为第二个参数传递:

1
2
var b64string = /* whatever */;
var buf = new Buffer(b64string, 'base64'); // Ta-da

如果您想保持清洁,可以检查from是否存在:

1
2
3
4
5
6
7
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
}