我有一个代码从另一个文件的文本写入文件的哈希值,但问题是在结果文件中不仅写入了哈希,还写入了原始文本。
例如:如果源文件qwerty
的内容有结果文件qwertyd8578edf8458ce06fbc5bb76a58c5ca4
,但我只需要d8578edf8458ce06fbc5bb76a58c5ca4
。
const fs = require('fs');
const crypto = require('crypto');
const hash = crypto.createHash('MD5');
const readData = fs.createReadStream('./task1/input.txt');
const writeData = fs.createWriteStream('./task1/output.txt');
readData.on('data', (chunk) => {
hash.update(chunk);
});
readData.on('end', () => {
const resultHash = hash.digest('hex');
writeData.end(resultHash);
console.log(resultHash);
});
readData.pipe(writeData);
我如何解决这个问题?感谢。
答案 0 :(得分:1)
如果你想哈希一个流,那就非常容易,因为hash
本身就是一个流(一个转换流)。只需将输入传入其中,然后将生成的哈希管道输出到输出中:
const fs = require('fs');
const crypto = require('crypto');
const hash = crypto.createHash('MD5');
const readData = fs.createReadStream('./task1/input.txt');
const writeData = fs.createWriteStream('./task1/output.txt');
readData.pipe(hash).pipe(writeData);