node怎么计算文件的md5校验值
 发布于 11 年前  作者 buctyoyo  20693 次预览  最后一次回复是 11 年前  来自  
8 回复
rapidhere

crypto模块

var crypto = require('crypto');

var h = crypto.createHash('md5');

h.update("A string");
h.update("Next string");

var ret = h.digest('hex'); //'11eb1cc525474f34a4eaf2ebc90d421f'
buctyoyo

这是计算一个字符串的,可以计算文件吗?

zengwenbing

http的客户端缓存的etag就是用到文件hash,把文件用流读到buffer存起来(加密后 楼上就可以),然后将buffer pipe到文件中

alsotang

@witmobyoyo

这不只是计算一个字符串,这是在计算一个流(buffer),buffer 的表现形式之一是字符串。

文件都是 buffer 组成的。

所以这个方法也能用来计算文件。

请在 statckoverflow 寻找对应代码。

dead-horse
var crypto = require('crypto');
var fs = require('fs');

var rs = fs.createReadStream('./file.tgz');

var hash = crypto.createHash('md5');
rs.on('data', hash.update.bind(hash));

rs.on('end', function () {
  console.log(hash.digest('hex'));
});