В дереве хешей не-конечные узлы являются прямыми хешами данных или хешами подхешей?

Я просматриваю статью в Википедии о хэш-деревьях, и меня слегка смущает их диаграмма.

Конечный узел, очевидно, содержит хэш лежащих в основе данных.

Отличаются ли листовые узлы в хеш-деревьях от любых неконечных узлов? Содержат ли нествольные узлы хэши данных или хэши?

Учитывая эту диаграмму:

Диаграмма хэш-дерева

Какой из них Hash 1 хэш?

  1. Hash 1-0 + Hash 1-1
  2. Data block 002 + Data block 003

Или хеш-деревья в корне различаются в зависимости от приложения (rsync, P2P-сети, Git и т. Д.)?

1 ответ

Решение

Вот что говорит вики-статья:

Узлы, расположенные дальше в дереве, являются хешами их соответствующих детей. Например, на рисунке хеш 0 является результатом хеширования 0-0, а затем хеша 0-1. То есть, hash 0 = hash( hash 0-0 || hash 0-1 ) где || обозначает конкатенацию.

Но я искренне верю, что разработчик может настроить дерево и алгоритм, использовать разные хеш-функции и т. Д., Оптимизируя его для разных данных, скорости, памяти или чего-либо еще.

Другие вопросы по тегам