Страницы

Поиск по вопросам

понедельник, 30 декабря 2019 г.

Сравнение хешей строк

#строки #хеширование


Допустимо ли делать выводы о равенстве содержимого строк на основе равенства их хешей?    


Ответы

Ответ 1



В общем случае, хэширование не является взаимно однозначным отображение, то есть нельзя утверждать, что две разные строки дадут два разных хэша. Возьмем для примера MD5 хэш. На вход поступает строка произвольной длины. На выходе - хэш длиной 128 бит. Таким образом, на входе бесконечное множество, а на выходе - конечное. Очевидно, что в бесконечном множестве найдется бесконечное количество строк, которые дадут один и тот же хэш.

Ответ 2



Нет, однозначно на основе сравнения кешей можно говорить о неравенстве объектов при неравенстве кешей. Совпадение кешей говорит о вероятном равенстве кешируемых объектов, поэтому нужно проверять их равенство непосредственно.

Ответ 3



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

Комментариев нет:

Отправить комментарий