Приложения хеширования

Опубликовано: 16 Января, 2022

В этой статье мы обсудим применение хеширования.

Хеширование обеспечивает постоянное время поиска, в среднем операции вставки и удаления. Вот почему хеширование является одной из наиболее часто используемых структур данных. Примеры проблем: отдельные элементы, подсчет частоты элементов, поиск дубликатов и т. Д.

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

  • Дайджест сообщения
  • Подтверждение пароля
  • Структуры данных (языки программирования)
  • Работа компилятора
  • Рабина-Карпа Алгортитм
  • Связывание имени файла и пути вместе

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

Возьмем пример :
Предположим, вам нужно хранить файлы в любом из доступных облачных сервисов. Вы должны быть уверены, что файлы, которые вы храните, не подделаны третьими лицами. Вы делаете это, вычисляя «хэш» этого файла с помощью алгоритма криптографического хеширования. Один из распространенных алгоритмов криптографического хеширования - SHA 256 . Вычисленный таким образом хэш имеет максимальный размер 32 байта. Итак, вычисление
хеширование большого количества файлов не будет проблемой. Вы сохраняете эти хэши на своем локальном компьютере.

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

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

Структуры данных (языки программирования):
Различные языки программирования имеют структуры данных на основе хэш-таблиц. Основная идея состоит в том, чтобы создать пару ключ-значение, где ключ должен быть уникальным значением, тогда как значение может быть одинаковым для разных ключей. Эта реализация видна в unordered_set и unordered_map в C ++, HashSet и HashMap в java, dict в python и т. Д.

Работа компилятора:
Ключевые слова языка программирования обрабатываются иначе, чем другие идентификаторы. Чтобы различать ключевые слова языка программирования (if, else, for, return и т. Д.) И другие идентификаторы и успешно скомпилировать программу, компилятор сохраняет все эти ключевые слова в наборе, который реализуется с помощью хэш-таблицы.

Алгоритм Рабина-Карпа:
Одно из самых известных применений хеширования - алгоритм Рабина-Карпа. По сути, это алгоритм поиска строки, который использует хеширование для поиска любого набора шаблонов в строке. Практическое применение этого алгоритма - обнаружение плагиата. Чтобы узнать больше об алгоритме Рабина-Карпа, пройдите в Searching for Patterns | Набор 3 (алгоритм Рабина-Карпа).

Связывание имени файла и пути вместе:
При перемещении по файлам в нашей локальной системе мы наблюдаем два очень важных компонента файла, а именно имя_файла и путь_файла. Чтобы сохранить соответствие между file_name и file_path, система использует карту (file_name, file_path), которая реализована с использованием хеш-таблицы.

Статьи по Теме:
Хеширование против BST, хеширование против Trie