node.js - Node JS : How to decode base64 encoded string back to binary?

标签 node.js encoding base64 decoding

我正在使用 salt 实现密码散列,所以我将 salt 生成为二进制,对密码进行散列,base64 对密码和 salt 进行编码,然后将它们存储到数据库中。

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

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

最佳答案

从 Node.js v6.0.0 开始,使用 the constructor method has been deprecated并且应该使用以下方法从 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
}

关于node.js - Node JS : How to decode base64 encoded string back to binary?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14573001/

相关文章:

javascript - Node.js - 浏览器化 : Error on parsing tar file

c# - C# 中的 XML 到 SQL 中的 varbinary 列

Javascript 以 dataURL 格式生成透明的 1X1 像素

javascript - 使用 Node js将mysql结果解析为变量

node.js - Docker 容器无法克隆公共(public) Github 存储库

javascript - Node.js for 循环后的回调

c# - 写入使用 AsciiEncoding.GetBytes 和 Convert.FromBase64String 解码的字节时 FileStream.Write 中的性能问题

mysql - ActiveRecord 在 Ruby 1.9.2-rc1 下以 ASCII-8Bit 返回数据

python - 在python中解码base64 guid

ios - 使用 Base64 进行输入和输出的 SHA256 实现