@WhiteNinja

Какой алгоритм хеширования использовать?

Добрый вечер!

В БД есть порядка 100 000+ записей (постоянно пополняются).
Есть поле ProductName (название продукта) и поле ProductNameHash (хеш от названия продукта, ProductName).
Поле ProductNameHash используется в запросе вида

SELECT Id FROM Products WHERE ProductNameHash=@Hash


Длина ProductName = 50-2500 символов.

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

Подскажите пожалуйста, какой алгоритм хеширования оптимально использовать в данном случае для поля ProductNameHash - MD5, SHA1, SHA-256 или что-то еще?
  • Вопрос задан
  • 233 просмотра
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Важно исключить возможность коллизий
Тогда чистый хэш вам не подходит. Хэш, как правило, отображает множество входных данных на меньшее по размеру множество хэшей и по определению допускает коллизии.
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Нужно решать проблему поиска, а не создания хеша.
Добавьте признаки к товару и ищите по ним.
Как вариант признака от названия (таблица идентификаторов признаков): "содержит только одну А", "содержит только одну Б",.. и т.д.
И сначала делать выборку по признаку - фильтровать, а в полученных записях - уже искать по полному имени.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы