我想在nodejs中获取文件的md5哈希,但是我得到的哈希与我可以直接从终端获得的哈希不同。
在nodejs中,我正在这样做(来自here)
var fd = fs.createReadStream('path/to/my/file');
var hash = crypto.createHash('md5');
hash.setEncoding('hex');
fd.on('end', function() {
hash.end();
console.log(hash.read()); // the desired sha1sum
});
fd.pipe(hash);
,输出为d41d8cd98f00b204e9800998ecf8427e
在我的终端上,我这样做:
md5sum path/to/my/file
输出为f6ef86836065f2370ebd9b1caadce3b4
您知道为什么吗?
谢谢
编辑
这是我的代码:
//Download file
var firmware = fs.createWriteStream(desiredFirmwareProperties.fwName);
var r = https.get(desiredFirmwareProperties.fwURI, function(response) {
response.pipe(firmware);
});
//Checksum
var fd = fs.createReadStream(desiredFirmwareProperties.fwName);
var hash = crypto.createHash(desiredFirmwareProperties.fwChecksumAlgo);
hash.setEncoding('hex');
fd.on('end', function() {
hash.end();
console.log(desiredFirmwareProperties.fwChecksum);
console.log(hash.read());
});
fd.pipe(hash);
答案 0 :(得分:0)
我知道了,这是一个异步过程,您试图在下载完成之前读取文件
将校验和过程置于“关闭”事件中:
firmware.on('close', () => {
<checksum here>
})