хеш-функция Java-строки с лавинным эффектом - PullRequest
1 голос
/ 15 февраля 2011

При тестировании с String.hashCode () я заметил, что он не имеет лавинного эффекта . Я знаю, что есть java-порт Дженкинса, хэш , но мне было интересно, есть ли хеш-функция, может быть, в какой-то библиотеке apache или чем-то еще, у которой есть это свойство.

Редактировать: Я ищу функцию, которая демонстрирует это свойство и возвращает 32-разрядное (или 64-разрядное) целое число (например, как хеш Дженкинса). Я не использую его для криптографии, и я не собираюсь заменять String.hashCode в целом. Я просто подумал, что hashCode имеет это свойство, и оказывается, что его нет, и мне интересно, есть ли что-нибудь в стандартных библиотеках java или, может быть, в apache lib, которое удовлетворяет мою потребность.

1 Ответ

3 голосов
/ 15 февраля 2011

Лавинный эффект, как описано на странице Википедии, на которую вы ссылаетесь, является важным свойством криптографических хеш-функций. String.hashCode() не является криптографической хеш-функцией. Его единственная цель - генерировать достаточно распределенные хэш-коды для разных строк, чтобы HashMap, HashSet и все другие коллекции, основанные на хэше, были эффективными при хранении строк.

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

...