我在后端使用md5sum来计算要上传到S3的文件的md5校验和,并且在节点js加密模块中有lambda来传输内容并使用s3参数的指定字节范围计算md5。>
但是,当我流式传输整个文件时,md5与我使用md5sum工具计算出的值匹配,但是当我在md5sum和s3 Range参数上指定相同的字节范围时,结果md5是否不同?
有人能解释为什么吗?任何帮助表示赞赏。谢谢!
这是lambda的md5计算:
is null
Lambda md5的输出是75cbf7ae988a9086b1faa780c4e4bdc2
这是我的bash脚本中md5sum中的md5计算:
let s3params = {
Bucket: 'bucket',
Key: filename.toString(),
Range: "bytes=0-1073741824"
};
let hash = crypto.createHash('md5');
let stream = s3.getObject(s3params).createReadStream();
stream.on('data', (data)=>{
hash.update(data);
}
);
stream.on('end', ()=>{
var digest = hash.digest('hex');
console.log("this is md5 value from digest: " + digest);
callback(null, digest);
digest = digest.toString().replace(/[^A-Za-z 0-9 \.,\?""!@#\$%\^&\*\(\)-_=\+;:<>\/\\\|\}\{\[\]`~]*/g, '');
});
,输出为d61b42882135eebb449fc3904dc708b2
答案 0 :(得分:0)
解决了该问题,S3参数标头上的字节范围应为0-1073741823而不是0-1073741824,然后md5匹配md5sum输出