Xxhash: скользящее окно xxhash

Созданный на 19 апр. 2019  ·  6Комментарии  ·  Источник: Cyan4973/xxHash

Здравствуй,

Поддерживает ли xxhash хеширование на основе скользящего окна? Например, предположим, что мы используем скользящее окно фиксированного размера из 48 байтов. Сначала мы вычисляем xxhash для первых 48 байтов (0-47 байтов). Затем, возможно ли вычислить следующее скользящее окно со смещением 1-48, вычтя воздействие из 0-го байта и добавив 48-й байт, без вычисления xxhash с нуля?

question

Все 6 Комментарий

Нет, xxhash - это не скользящий хеш.
Это потребует использования входного байта за байтом и сохранения идеальной математической линейности, в то время как xxhash принимает данные полными полосами и специально нарушает линейность, чтобы улучшить распределение битов.

Спасибо за ваше объяснение! Думаю, мне нужно искать другие скользящие хеши.

@ Cyan4973 Поскольку вы также

Не могли бы вы вкратце обрисовать или дать ссылку на методы, которые делают xxHash быстрым и хорошо распространяемым, которые все еще можно применить к скользящим хешам?

Было бы замечательно иметь возможность создать скользящий хеш, например, для rsync или дедупликации данных в памяти ala bup , который по производительности приближается к xxHash.

Известные мне скользящие хеши в корне отличаются от xxhash или любого другого высококачественного хеша.
Имхо, эти 2 категории не пересекаются.

Вы слишком узко думаете, @ Cyan4973.

XXH3 определенно может быть скользящим хешем. Только не в традиционном понимании.

Каждые выровненные 1024 байта (один блок, учитывая размер секрета по умолчанию) могут быть вставлены или извлечены. Для этого нужны все 8 аккумуляторов, но это определенно выполнимо.

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

Гранулярность на уровне КБ действительно возможна с XXH3,
хотя для этого потребуется приложение, способное использовать преимущества этого уровня детализации.

Кроме того, это не так просто, как обычный скользящий хеш,
где RH(p, p+N) = H(RH(p-1, p+N-1), p+N) - h(p-1) .
Для XXH3, поскольку нет линейности, по-прежнему необходимо рекомбинировать и скремблировать все переваренные фрагменты размером 1 КБ в правильном порядке.
Это все еще меньше работы, чем повторная обработка всего ввода, но рабочая нагрузка линейно увеличивается с размером обрабатываемого сегмента.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

carstenskyboxlabs picture carstenskyboxlabs  ·  6Комментарии

easyaspi314 picture easyaspi314  ·  6Комментарии

devnoname120 picture devnoname120  ·  8Комментарии

gitmko0 picture gitmko0  ·  4Комментарии

gitmko0 picture gitmko0  ·  7Комментарии