Обновление hashlib из входных данных в Python - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь найти способ обновить объект hashlib на основе выходных данных другого объекта hashlib.Это звучит странно, но по сути:

import hashlib

part1 = b'abcdefg'
part2 = b'hijklmnop'

# Normal way
hasher1 = hashlib.sha256()
hasher1.update(part1)
hasher1.update(part2)

# Way I need to do it (different hashlib objects)
hasher2 = hashlib.sha256()
hasher2.update(part1)
hasher3 = hashlib.sha256(hasher2.digest())
hasher3.update(part2)

print(hasher1.digest() == hasher3.digest()) # False, but I wish it was True

Я надеялся, что эти двое вернут один и тот же дайджест, но это не так.Есть какие-нибудь мысли о том, как «продолжить» хеш, используя новый объект hashlib?

РЕДАКТИРОВАТЬ: Мой вопрос был неясен, извините.Мне нужно иметь возможность вычислить хэш для блока сообщений на одном компьютере, затем отправить полученный хэш на второй компьютер и «продолжить» хэш на втором компьютере с помощью второго блока сообщений.Итак, процесс выглядит так:

hasher2 = hashlib.sha256()
hasher2.update(part1)
intermediate_result = hasher2.digest()

### send intermediate result over some sort of connection ###

hasher3 = hashlib.sha256(intermediate_result)
hasher3.update(part2)
final_result = hasher3.digest()

Так что из-за этой части в середине, где он должен находиться между двумя программами, я не могу использовать метод .copy().

...