Хеш — это результат обработки некоторых данных хеш-функцией.
Хеш-функция представляет собой функцию, которая может принимать на вход блок данных любой длины (текстовую строку, звуковую дорожку, фильм, изображение и др.) и давать на выходе строку символов фиксированной длины. При этом алгоритм вычисления хеш-функции устроен так, что любое, даже малейшее изменение входных данных в значительной степени изменяет результат на выходе.
Хеш-функции очень полезны и повсеместно применяются в компьютерной технике. Например, они позволяют проверить целостность данных, то есть убедиться, что во время передачи по каналу связи они не были изменены в результате какой-либо помехи или иной ошибки. Для этого отправитель данных вычисляет их хеш, а потом отправляет получателю и данные, и хеш. Получатель, в свою очередь, вычисляет хеш принятых данных и сравнивает его с хешем, полученным от отправителя. Если они не совпадают, то это говорит о нарушении целостности данных, и система связи повторяет отправку.
Помимо обычных хеш-функций существуют еще и криптографические хеш-функции. К ним предъявляется ряд дополнительных требований. В частности, они должны быть односторонними. Для односторонней функции очень трудно по имеющемуся хешу определить, какие именно данные были поданы ей на вход. Благодаря этому свойству криптографические хеш-функции часто используют для защиты паролей на серверах — в базах данных хранятся не сами пароли, а их хеши. Поэтому даже если злоумышленник получит доступ к базе данных, он не сможет украсть пароли пользователей.
Есть и многие другие области применения хеш-функций: поиск данных, электронная подпись, обнаружение дублирующихся файлов и др.