首页 文章

校验和md5生成的值不匹配

提问于
浏览
0

我在我的后端使用md5sum来计算我上传到S3的文件的md5校验和,我在节点js加密模块中有lambda来流内容并用s3参数的指定字节范围计算md5 .

但是,当我流式传输整个文件时,md5与我用md5sum工具计算的匹配,但是当我在md5sum和s3 Range参数上指定相同的字节范围时,生成的md5是不同的?

有谁能解释为什么会这样?任何帮助表示赞赏 . 谢谢!

这是lambda的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, '');
});

lambda md5的输出是75cbf7ae988a9086b1faa780c4e4bdc2

这是我的bash脚本中md5sum的md5计算:

bigchecksum=$(head -c 1073741824 ${file} | md5sum | cut -d ' ' -f 1)

输出是d61b42882135eebb449fc3904dc708b2

1 回答

  • 0

    想出了问题,S3参数头的字节范围应该是0-1073741823而不是0-1073741824,那么md5匹配md5sum输出

相关问题