Что такое хэширование?

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

Много чего уже было рассмотрено и рассказано в нашей ставшей уже традиционной рубрике F.A.Q. Добрались мы, наконец, и до такой интересной и полезной вещи, как хэширование. А вы знаете, что это такое?

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

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

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

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

Вадим СТАНКЕВИЧ,
[email protected]

Версия для печатиВерсия для печати

Номер: 

14 за 2008 год

Рубрика: 

Software
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!