Как стать автором
Обновить

Обзор параллельных режимов работы хэш-функций

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров2.4K
Всего голосов 8: ↑8 и ↓0+8
Комментарии4

Комментарии 4

А что мешает просто разбить файл на число равных частей заведомо превышающее числу ядер (64?), параллельно вычислить хеш для каждой из них, соединить хеши и вычислить хеш для них? хеш-функция может быть любой.

Придумать, как считать хеш деревом в много потоков особого ума не надо (у некоторых при этом ещё и неограниченная память получается, O(log n)). А вот придумать криптостойкий и при этом реально быстрый (скажем, быстрее чем MD5) однопоточный хеш -- надо постараться. Насколько я знаю, если не считать расширение команд типа SHA-NI, быстрее MD5 в 1 поток, так ничего и не придумали, притом что у MD5 бооольшие проблемы с collision resistance (которой у него нет).

Есть ли в этом направлении какие-то разработки, интересно?

Если рассматривать реальную производительность на современном железе, а не исключительно однопоточные варианты, то стоит посмотреть в сторону семейства BLAKE, например, BLAKE3.

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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации