所以要点是:我正在使用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计算整个文件的哈希值?
我很傻。我在linux系统上的文件在文件末尾有一个新的空白行,AWS似乎覆盖了该行。从本地计算机上删除空行后,我最终得到了正确的校验和。