Можно ли использовать ноль в качестве исключения для MurmurHash3 - PullRequest
0 голосов
/ 13 февраля 2019

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

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

Примечание: Ожидаемый диапазон символов во входной строке в блоках Юникод Basic и Latin-1.Нет символов NUL.

1 Ответ

0 голосов
/ 14 февраля 2019

Ну, один из 2 ^ 128 входов будет действительно хэшировать до 0.

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

...