【问题标题】:checksum md5 value generated does not match生成的校验和 md5 值不匹配
【发布时间】:2018-07-09 21:35:07
【问题描述】:

我在后端使用 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

【问题讨论】:

    标签: node.js amazon-s3 md5 checksum md5sum


    【解决方案1】:

    发现问题,S3参数头的字节范围应该是0-1073741823而不是0-1073741824,然后md5匹配md5sum输出

    【讨论】:

      猜你喜欢
      • 2020-12-02
      • 1970-01-01
      • 2020-07-02
      • 2021-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-27
      • 1970-01-01
      相关资源
      最近更新 更多