Алгоритм хеширования, его использование? - PullRequest
7 голосов
/ 28 апреля 2010

Я не совсем понимаю алгоритмы хеширования. Любой хочет объяснить мне это очень просто и понятно.

Спасибо

РЕДАКТИРОВАТЬ: Использование с именами пользователей из текстового файла.

Ответы [ 4 ]

11 голосов
/ 28 апреля 2010

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

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

2 голосов
/ 28 апреля 2010

Хеш означает отношение 1 к 1 между данными. Это распространенный тип данных в языках, хотя иногда его называют словарь. Алгоритм хеширования - это способ получить вход и всегда иметь один и тот же выход, иначе известный как функция 1: 1. Идеальная хеш-функция - это когда один и тот же процесс всегда дает уникальный результат. Таким образом, вы можете сказать кому-нибудь, вот файл, а вот его хэш md5. Если файл был поврежден во время, хеш md5 будет иметь другое значение.

На практике хеш-функция всегда будет выдавать значение одного и того же размера, например, md5 () всегда будет возвращать 128 битов независимо от размера ввода. Это делает отношения 1 к 1 невозможными. Криптографическая хэш-функция принимает дополнительные меры предосторожности, затрудняя создание 2 разных входов с одинаковым выходом, это называется коллизией. Это также затрудняет реверсирование функции. Хэш-функции используются для хранения паролей, потому что если злоумышленник получит хеш пароля, он заставит злоумышленника разорвать хэш, прежде чем он сможет использовать его для входа в систему. Чтобы разбить хеш-атаки, потребуется список слов или словарь английского языка и найти все соответствующие хеш-значения, а затем выполнить итерацию по списку для каждого пароля в поисках совпадения.

md5 (), sha0 и sha1 () все уязвимы для атак хеш-коллизий и никогда не должны использоваться для каких-либо связанных с безопасностью действий. Вместо этого следует использовать любого члена семейства sha-2, такого как sha-256.

2 голосов
/ 28 апреля 2010

Алгоритмы хеширования пытаются упростить сравнение больших данных. Вместо сравнения данных с равенством достаточно сравнить значения хеш-функции.

Существует множество различных алгоритмов хеширования, некоторые из них - криптографические алгоритмы хеширования, такие как MD5, SHA1, SHA256 и т. Д. Если у вас есть два одинаковых значения хеш-функции, вы можете быть уверены, что данные также совпадают.

2 голосов
/ 28 апреля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...