所以要点是:我正在使用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计算整个文件的哈希值
我太蠢了。我在linux系统上的文件在文件末尾有一个新的空行,AWS似乎覆盖了它。一旦我从本地机器上删除了空白行,我最终得到了正确的校验和。
相关问题 更多 >
编程相关推荐