Я столкнулся с необходимостью отправлять свои данные по частям, и в то же время я должен предоставить sha256 для своих ВСЕХ данных.
Что-то вроде этого cat large file | chunker | receiver
, где получатель - это приложение, котороеожидается получение данных, возможно, порциями, имеющими в заголовке sha256 полезной нагрузки и затем следующей полезной нагрузки.После сбора всех фрагментов предполагается сохранить все переданные данные, и sha256 всех данных (конкретный sha256 будет использоваться только для перефразирования и подтверждения целостности данных.)
Конечно, самая простая вещьбыло бы, если бы получатель генерировал sha256 из всех потоковых данных, но мне было интересно, есть ли более простой способ, собирая все хеши всех кусков, и объединяя их для генерации одного окончательного хеша, который будет таким же, как хеш, вычисленный извсе данные.
Другими словами - и я копирую это из заголовка - мне интересно, есть ли функция F, которая получала бы список хешей кусков данных, а затем генерировала бы окончательный хеш, который будетравен хешу, сгенерированному для всех данных.
И снова, другими словами, имея эту формулу: F (sha256 (данные [0]), sha256 (данные [1]), ... sha256 (data [N])) = sha256 (data [0..N])
Какой будет функция F?Будет ли это универсальная функция или нет такой вещи для вычисления хэширования?
Я подозреваю, что такой функции нет или это слишком сложный вопрос, чтобы на него ответить.