我正在使用salt实现密码哈希,所以我生成了salt作为二进制文件,哈希密码,base64编码密码和salt然后将它们存储到数据库中.
现在,当我检查密码时,我应该将盐解码为二进制数据,使用它来散列提供的密码,base64编码结果并检查结果是否与数据库中的结果匹配.
问题是,我找不到将盐解码为二进制数据的方法.我使用Buffer.toString方法对它们进行编码,但似乎没有反向函数.
我目前正在接收一个编码为base64字符串的文件作为json有效负载的一部分:
{
"file":"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPGRlZmluaXRpb25zIHhtb..."
}
Run Code Online (Sandbox Code Playgroud)
使用该字符串我应该将文件作为multipart/form-data发布到不同的服务,所以我有一个像这样的方法(使用请求模块):
var request = require('request');
var fs = require('fs');
var importFile = function(fileBase64Encoded, cb) {
var decodedFile = new Buffer(fileBase64Encoded, 'base64');
var r = request.post('http://localhost:8888/upload', function (err, httpResponse, body) {
if (err) {
cb(err);
}
cb(null, body);
});
var form = r.form();
form.append('file', decodedFile);
}
Run Code Online (Sandbox Code Playgroud)
这目前无效.如果我将文件写入磁盘并从那里读取它,如下所示:
var request = require('request');
var fs = require('fs');
var importFile function(fileBase64Encoded, cb) {
var decodedFile = new Buffer(fileBase64Encoded, 'base64');
fs.writeFile('temp.txt', decodedFile, function (err) {
if (err) return console.log(err); …Run Code Online (Sandbox Code Playgroud)