一尘不染

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

node.js

我当时用salt实现密码哈希,所以我以二进制形式生成了salt,对密码进行了哈希处理,对base64进行了编码,然后将salt存储到数据库中。

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

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


阅读 425

收藏
2020-07-07

共1个答案

一尘不染

从Node.js v6.0.0
开始,不赞成
使用构造方法,而应使用以下方法从base64编码的字符串构造新缓冲区:

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

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

构造一个newBuffer并将其作为第二个参数传递'base64'

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
}
2020-07-07