【发布时间】:2019-09-20 18:58:39
【问题描述】:
我想在 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);
【问题讨论】:
-
您的代码有效。我检查并复制了
-
是的,我知道它可以工作,但为什么哈希值与我在终端中获取的不同?
-
哈希值也一样。我检查了
-
好吧,很奇怪..对我来说绝对不一样
-
看答案。我刚刚发布了