我正在使用 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 及以下版本
构造一个新的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
}
关于node.js - Node JS : How to decode base64 encoded string back to binary?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14573001/