Может ли кто-нибудь помочь в обучении хэшированию?
Недавно я прочитал несколько статей о методах хеширования. Кажется, что хеширование есть везде.
В информатике хеш-таблица обычно используется в качестве эффективного поиска структур данных.
В шифровании хэширование выполняется в таких методах, как хэш md5, хэш ша и т. Д.
В области базы данных. Хеширование заключается в построении ключа таблицы в базах данных.
В машинном обучении хеширование заключается в создании коротких хеш-кодов для эффективной обработки и экономичного хранения, таких как хеширование с учетом локальных условий, минимальное хеширование, сим-хеш, трюк хеширования и так далее.
Каковы одинаковые и разные точки этих приложений на хеширование? Не могли бы вы предоставить некоторые чтения или ссылки на эти хеширования? Особенно различия по ним. Я запутался в этих методах хеширования.
1 ответ
Я думаю, что существенным моментом хеширования является возможность взять группу контента переменной длины, динамического характера и асинхронного, и иметь возможность применять алгоритм к каждому члену этого контента, что приводит к "стабильному", фиксированному и, по сути, уникальный идентификатор для каждого. В этом смысл большинства приведенных вами примеров:
- Хеш-таблицы: преобразуйте строку или структуру ключа переменной длины в "стабильный" уникальный идентификатор с известными нижними и верхними границами (так называемые номера строк в массиве, адреса строк в массиве, номера строк в базе данных).
- Криптография: преобразуйте обычный текст переменной длины в стабильный, уникальный и фиксированный идентификатор.
- Машинное обучение (по крайней мере, уловка хеширования): трансформируйте слова (и, возможно, их контекст) в устойчивый и уникальный ключ в универсальную численно организованную онтологию
Во всех этих случаях вы делаете небольшую сводку содержимого переменной длины в каждом члене группы. Эти небольшие сводки значительно упрощают работу со всем содержимым переменной длины, а в случае хеш-таблиц могут значительно ускорить обработку. Или особенно в случае криптографии может обеспечить значительные преимущества, такие как защита паролем (при использовании правильного ключа и повторного хеширования) или проверка целостности контента.
Вы заметите, что хэши почти всегда приводят к потенциальным конфликтам: например, два совершенно разных члена группы с разным содержимым, но алгоритм хеширования генерирует одно и то же итоговое / хеш-значение. Важной частью дизайна хэш-функции является определение допустимого уровня разрешенного дублирования, а в проекте реализации хеш-функции - правильное решение проблемы столкновения, когда это происходит. Для хэш-таблицы, использующей только небольшой объем ОЗУ, частота столкновений может быть высокой. Используя 256-битные крипто-хеширующие функции, вероятность коллизии может быть фактически равна нулю.
Кроме того, хеширование почти всегда "в одну сторону". Большинство алгоритмов хеширования сознательно "с потерями" (именно поэтому происходят дубликаты), и из-за этого обычно невозможно выполнить обратный расчет исходного содержимого переменной длины только из суммарного значения / значения хеша. Есть обходные пути, но простой и быстрый обратный расчет обычно невозможен.
Обратите внимание, что мы используем "алгоритмы хеширования" и в нашей реальной жизни. Мы используем имена коллег в крупных компаниях для удобства разговоров / отправки по электронной почте / общения в чате (тривиальный хеш), хотя наверняка найдется много коллег с одинаковыми именами. И, таким образом, происходят столкновения ("Вы имеете в виду Мэри в бухгалтерии или Мэри в судоходстве?"). Вы можете "перемешать" все известные продукты салфетки для лица в слово "Kleenex" (по крайней мере, в США), но все же предпочитаете покупать и использовать другой бренд.