将十六进制/二进制字符串打印到nodejs中的文件

时间:2015-03-12 13:22:42

标签: node.js encryption buffer file-writing

我正在尝试做一些看似简单的事情:

var token = crypto.randomBytes(32);
var wstream = fs.createWriteStream('output.hex');
wstream.write(token);
wstream.end();

运行此代码后,output.hex文件为空。在代码期间永远不会修改token

同样,我试试这个:

// encrypts a message
var token = crypto.randomBytes(32);
var cipher = crypto.createCipher('aes-256-cbc', token);
var enc_msg = cipher.update(msg, 'binary', 'binary');
enc_msg += cipher.final('binary');

// print it
console.log(enc_msg);  // prints Øôâ¨7"ªðqâ~è (binary data - good)

// check the type
console.log(type of enc_msg); // prints 'string'

// write it to a file (fails)
var wstream = fs.createWriteStream('output.hex');
wstream.write(enc_msg);
wstream.end();

我在这里缺少什么?该文件始终为空。

1 个答案:

答案 0 :(得分:0)

我弄清楚问题是什么。

wstream.write()函数是异步的(对我来说这并不明显,因为我没有提供回调)。因此,当我的脚本试图写入文件时,它得到我的process.exit(0)命令(不在原始问题中)并在实际写入之前终止了脚本。

删除强制退出并让脚本在准备工作时就像魅力一样终止。