HTML加js实现计算文件哈希值,Node.js计算文件md5或sha1等哈希值

前几天学习整理了Node.js的crypto模块,crypto模块实现了OpenSSL中相关加密码技术,可以用于文件啥希值计算、加密、解密、验证等。最近要做APP升级功能,为了验证APP文件的完整性,需要在服务端计算文件的MD5值,APP升级时会对文件的MD5值进行较验。

计算文件哈希值,需要使用crypto模块中的Hash类。Hash类是一个可读写的Stream流,要计算文件的哈希值首先要读取文件并创建一个Stream。在Node.js中,操作文件使用的fs模块。以下是一个计算文件MD5值的示例,代码如下:

var crypto = require('crypto');

var fs = require('fs');

//从文件创建一个可读流

var stream = fs.createReadStream('./mindpush.apk');

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

stream.on('data', function(d) {

fsHash.update(d);

});

stream.on('end', function() {

var md5 = fsHash.digest('hex');

console.log("文件的MD5是:%s", md5);

});

在上面的示例中,基于流事件监听创建并更新文件哈希流。hash.update方法,默认传入数据类型为Buffer。使用fs模块的fs.readFile或fs.readFileSync方法,可以从文件读取一个文件的Buffer。因此,以上代码可以简化为:

var crypto = require('crypto');

var fs = require('fs');

//读取一个Buffer

var buffer = fs.readFileSync('./mindpush.apk');

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

fsHash.update(buffer);

var md5 = fsHash.digest('hex');

console.log("文件的MD5是:%s", md5);

Hash类除可以计算文件MD5值外,还可用于计算文件的'sha1'、'sha256'、'sha512'等值,使用时修改crypto.createHash('md5')方法的传入参数即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值