计算S3 StreamingBody的sha256与sha256sum返回的校验和不同

问题描述 投票:0回答:1

所以要点是:我正在使用boto3从S3获取get_object。响应主体包含“ StreamingBody”对象。当我像这样计算它的sha256总和时:

sha256 = hashlib.sha256()
for line in file_to_extract_from.iter_lines():
    sha256.update(line)

print("sha256: {0}".format(sha256.hexdigest()))

它返回16aba5393ad72c0041f5600ad3c2c52ec437a2f0c7fc08fadfc3c0fe9641d7a3

但是,当我使用Linux内置的sha256sum计算它时,它将返回b7f1ee9373416a49835747455ec4d287bcccc5a4bf8c38156483d46b35ce4dbd。我想知道我的配置出了什么问题?

编辑:问了这个问题之后,我意识到S3只是向我返回文件的内容,并根据该内容计算哈希值,而在Linux上,我正在为整个文件计算哈希值。有没有一种方法可以从S3计算整个文件的哈希值?

python amazon-web-services amazon-s3 hash boto3
1个回答
0
投票

我很傻。我在linux系统上的文件在文件末尾有一个新的空白行,AWS似乎覆盖了该行。从本地计算机上删除空行后,我最终得到了正确的校验和。

© www.soinside.com 2019 - 2024. All rights reserved.