Я пытаюсь найти способ обновить объект 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()
.