Подтвердить что ты не робот

Что такое параметр семян MurmurHash3?

MurmurHash3_x86_32() ожидает параметр seed. Какую ценность я должен использовать и что он делает?

4b9b3361

Ответ 1

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

Почему это предусмотрено?

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

Смотрите: Эффективные DoS на платформе веб-приложений

Также есть тег Twitter для #hashDoS

Ответ 2

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

Ответ 3

Значение с именем seed здесь означает соль. Предоставьте любые случайные, но частные (к вам приложения) данные, поэтому хеш-функция даст разные результаты для одних и тех же данных. Эта функция используется, например, для сбора данных ваших данных для определения модификации исходных данных третьими лицами. Они вряд ли смогут воспроизвести действительную хеш-ценность, пока не узнают соль, которую вы использовали.

Соль (или семя) также используется для предотвращения хеш-коллизий для разных данных. Например, ваши блоки данных A и B могут создавать один и тот же хеш: h (A) == h (B). Но вы можете избежать этого противоречивого условия, если предоставить какие-то дополнительные данные. Столкновения довольно редки, но иногда соль - это способ избежать их для конкретного набора данных.