Если я знаю хэши двух частей некоторых данных, могу ли я рассчитать хэш полных данных из этих хэшей? - PullRequest
2 голосов
/ 03 мая 2011

Если я знаю хэши двух (или более) частей некоторых данных, могу ли я рассчитать хэш полных данных из этих хэшей?

Для каких типов хешей это можно сделать? ? SHA1, SHA256, MD5? (Безопасность хэшей не важна для моего варианта использования.)

т.е.

data0 = '0123'
data1 = '45678'
all_data = data0 + data1
hash0 = hash(data0)
hash1 = hash(data1)

Существует ли fn такой, что

hash(all_data) == fn(hash0, hash1)

Существует ли fn для MD5, SHA1 или SHA256?

Спасибо

Крис.

Ответы [ 2 ]

2 голосов
/ 03 мая 2011

Краткий ответ. Нет.

Хэши совершенно различны для минимальных отклонений, и пока вы не сможете их вычислить обратно, это не сработает. Даже если вы сможете рассчитать их обратно, результатом будет список возможностей, которые вы можете выбрать. Так что нет ничего детерминированного.

0 голосов
/ 19 ноября 2013

Хеширование через data0 переводит систему в промежуточное состояние. Ваш hash(data1) был рассчитан из чистого состояния. Вы не можете исправить hash1, чтобы восполнить это отсутствующее промежуточное состояние (для хорошей хэш-функции).

...