Top.Mail.Ru
Ответы

Объясните за хэш-функции

Вот хоть убейте, не понимаю.
Хэширование используется, условно, для кодирования.
Ну закодировал я предложение по md2. Получил хэш
Вставил этот хэш в декодер по первой ссылке из яндекса и получил исходный текст.
В чем смысл?

По дате
По рейтингу
Аватар пользователя
Новичок

Хэширование НЕ используется для кодирования - от слова "совсем".
Хэширование - это получение числового слепка данных, по которому исходные данные НЕВОЗМОЖНО декодировать. И нужен хэш для проверки того, что данные не были изменены (т.к. малейшее изменение данных радикально меняет значение хэша).

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

P.S. MD2 умер в 1990 году. В современном мире его никто и нигде не использует.

Аватар пользователя
Знаток

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

  • Они быстрые, то есть можно легко вычислить хэш от любых данных.

  • Они необратимые, то есть нельзя восстановить исходные данные по хэшу без перебора всех возможных вариантов.

  • Они уникальные, то есть вероятность того, что два разных набора данных дадут одинаковый хэш, очень мала.

Смысл хеширования зависит от того, для чего оно используется. Например, хеширование может использоваться для:

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

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

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

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

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

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