Расчет sha256 S3 StreamingBody отличается от возвращенной контрольной суммы sha256sum - PullRequest
0 голосов
/ 05 октября 2019

Итак, суть в том, что я использую boto3 для get_object из S3. Тело ответа содержит объект 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 сумму sha256, вместо нее возвращается b7f1ee9373416a49835747455ec4d287bcccc5a4bf8c38156483d46b35ce4dbd. Интересно, что не так с моей конфигурацией?

РЕДАКТИРОВАТЬ: Задав этот вопрос, я понял, что S3 возвращает мне только содержимое файла и вычисляет хеш на основе этого, где, как на моем Linux яm вычисляя хеш для всего файла. Есть ли способ вычислить хэш для всего файла из S3?

1 Ответ

0 голосов
/ 05 октября 2019

Я был глуп. Мой файл в моей системе Linux имел новую пустую строку в конце файла, которую AWS, похоже, перезаписывает. После того, как я удалил пустую строку с моего локального компьютера, я получил правильную контрольную сумму.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...