【问题标题】:Decoding a zip file downloaded from s3解码从 s3 下载的 zip 文件
【发布时间】:2021-09-30 18:03:33
【问题描述】:

我正在尝试解码一个 zip 文件,以便从中创建一个 md5 哈希。

当我运行它时

contents = response['Body'].read()
decoded = contents.decode('utf-8')

我收到此错误

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x90 in position 10: invalid start byte

对我有用的是IBM437

contents.decode('IBM437')

整个哈希流程在 AWS 的 ContentMD5 上传检查中起作用

我不会重新格式化它的上传方式,我只是将其编码为非 utf-8 以创建一个有效的 md5 哈希

IBM437 中这样做有什么注意事项,因为 utf-8 看起来像是“标准”类型。

【问题讨论】:

  • Zip 文件是二进制数据,它们不能被有意义地解码为文本。为什么不只是散列字节?
  • 如果要计算二进制文件的has,只要计算contents的has,完全不需要强制转换成字符串。

标签: python amazon-s3 character-encoding md5


【解决方案1】:

正如 cmets 中有人建议的那样。我们不必将二进制文件转换为字符串。

所以这将是重新方法

contents = response['Body'].read()
md = hashlib.md5(contents).digest()
contents_md5 = base64.b64encode(md).decode('utf-8')

【讨论】:

    猜你喜欢
    • 2021-02-25
    • 2020-05-28
    • 2020-05-20
    • 2017-01-12
    • 1970-01-01
    • 1970-01-01
    • 2021-03-07
    • 2021-10-03
    • 2020-09-19
    相关资源
    最近更新 更多