Хэширование - вычисление по входным данным некоторого числа, используемого для контроля передачи данных, поиска данных в таблице, организации парольной защиты.
Много чего уже было рассмотрено и рассказано в нашей ставшей уже традиционной рубрике F.A.Q. Добрались мы, наконец, и до такой интересной и полезной вещи, как хэширование. А вы знаете, что это такое?
Хранение больших объёмов информации требует организации быстрого доступа к ней. Хэширование является одним из способов организации такого доступа. Основная идея хэширования состоит в вычислении по входным данным некоторого числа фиксированного размера, которое как бы будет указывать адрес данных в таблице. При этом такое число будет называться хэшем, а функция, с помощью которой оно вычисляется, - хэш-функцией. Поскольку функцию, которая будет однозначно сопоставлять данные с хэшами, трудно подобрать даже для достаточно больших таблиц, то используют специальные методы разрешения неоднозначностей, называемых коллизиями.
Основное свойство всех хэш-функций - их необратимость, то есть по хэшу невозможно восстановить первоначальные данные, по которым он вычислен. Это свойство позволяет применять хэширование в таких важных областях человеческой деятельности, как компьютерная безопасность и криптография. При этом хэш-функции, применяемые в крипографии, должны отвечать требованиям криптографической стойкости: должно быть практически невозможно подобрать для заданных данных другую последовательность данных с совпадающей хэш-функцией, и, кроме того, должно быть практически невозможно подобрать наугад две последовательности данных с совпадающим хэшем. Слово "практически" подразумевает разумную сложность подбора, определяемую математически.
Необратимость хэшей позволяет применять их для организации парольной защиты, когда в базе данных хранятся не сами пароли, а их хэши. Таким образом, даже если злоумышленнику и удастся каким-то образом взломать базу данных и прочитать хэши, это ему никак не поможет.
Хэш-функции широко используются для сверки данных. Если хэши переданных и принятых данных совпадают, то процесс передачи данных считается успешно состоявшимся. Простым примером хэширования как раз из этой области может служить нахождение контрольной суммы сообщения: хэшем в данном случае служит сумма кодов всех входящих в него символов, от которой берётся несколько последних цифр.
Вадим СТАНКЕВИЧ,
[email protected]
Горячие темы