我用salt实现了密码哈希,所以我将salt生成为二进制,对密码进行哈希,base64对密码进行编码,然后salt将它们存储到数据库中.

现在,当我判断密码时,我应该将salt解码回二进制数据,使用它对提供的密码进行哈希运算,对结果进行base64编码,并判断结果是否与数据库中的结果匹配.

问题是,我找不到一种方法将盐解码回二进制数据.我用缓冲区对它们进行了编码.toString方法,但似乎没有反向函数.

推荐答案

As of Node.js v6.0.0使用the constructor method has been deprecated和以下方法从base64编码的字符串构造新缓冲区:

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

For Node.js v5.11.1 and below

建造一个新的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相关问答推荐

需要关于基于角色授权的设计建议

如何解决无法获得本地颁发者证书的问题

(0,core_1.default)不是使用@middy/core的lambda处理程序上的函数

类扩展值[object object]不是构造函数或null

Node.js 连接在查询完成之前终止

在 Docker 容器内创建一个 cron 作业(job)来执行 run.js 文件中的函数

我如何在nodejs中的路由之间交换令牌

nyc 代码覆盖不适用于 NodeJs Express 服务器

如何使用 NodeJS 加密模块将 ECDH 密钥转换为 PEM 格式

在 nodejs 中使用 multer 上传文件返回未定义的 req.file 和空的 req.body

Nodejs mongoose 在一个查询中从多个集合中获取结果

AJAX 和 Node JS:在我的服务器中接收空数据

try 运行迁移时的 Typeorm:缺少必需的参数:dataSource

为什么我在生产环境中 deproy Next.js 示例项目时 CSS 不起作用?

如何使用适用于 Node.js 的 AWS 开发工具包将 Amazon S3 中的所有对象从一个前缀复制/移动到另一个前缀

使用 Webpack 和 font-face 加载字体

对不同对象中的函数使用相同的键时,V8 中的函数调用缓慢

将变量传递给nodemailer中的html模板

如何从命令行在 Node.js 上运行 Jasmine 测试

如何解决 Socket.io 404(未找到)错误?