В дереве хешей не-конечные узлы являются прямыми хешами данных или хешами подхешей?
Я просматриваю статью в Википедии о хэш-деревьях, и меня слегка смущает их диаграмма.
Конечный узел, очевидно, содержит хэш лежащих в основе данных.
Отличаются ли листовые узлы в хеш-деревьях от любых неконечных узлов? Содержат ли нествольные узлы хэши данных или хэши?
Учитывая эту диаграмму:
Какой из них Hash 1
хэш?
Hash 1-0
+Hash 1-1
Data block 002
+Data block 003
Или хеш-деревья в корне различаются в зависимости от приложения (rsync, P2P-сети, Git и т. Д.)?
1 ответ
Вот что говорит вики-статья:
Узлы, расположенные дальше в дереве, являются хешами их соответствующих детей. Например, на рисунке хеш 0 является результатом хеширования 0-0, а затем хеша 0-1. То есть,
hash 0 = hash( hash 0-0 || hash 0-1 )
где || обозначает конкатенацию.
Но я искренне верю, что разработчик может настроить дерево и алгоритм, использовать разные хеш-функции и т. Д., Оптимизируя его для разных данных, скорости, памяти или чего-либо еще.