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

2024-09-27 07:25:25 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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计算整个文件的哈希值


Tags: 文件to对象infors3lineboto3

热门问题