Хэш
Хэш или хэш-функция – одна из основных составляющих современной криптографии и алгоритма блокчейна.
Хэширование представляет собой преобразование любого объема информации в уникальный набор символов, который присущ только этому массиву входящей информации. Этот набор символов и будет называться хэшем.
Свойства хэша
У хэш-функции есть несколько обязательных свойств:
- Хэш всегда уникален для каждого массива информации. Однако иногда случаются так называемые коллизии, когда для разных входных блоков информации вычисляются одинаковые хэш-коды.
- При самом незначительном изменении входной информации ее хэш полностью меняется.
- Хэш-функция необратима и не позволяет восстанавливать исходный массив информации из символьной строки. Это можно сделать, только перебрав все возможные варианты, что при бесконечном количестве информации требует много времени и денег.
- Хэширование позволяет достаточно быстро вычислить нужный хэш для достаточно большого объема информации.
- Алгоритм работы хэш-функции, как правило, делается открытым, чтобы при необходимости можно было оценить ее стойкость к восстановлению начальных данных по выдаваемому хэшу.
- Хэш-функция должна уметь приводить любой объем данных к числу заданной длины.
Практическое использование хэша
Работа с большими объемами информации
Такой пример не часто встречается в реальной работе, но он наглядно показывает, насколько хэш-функция может облегчить работу с большими объемами информации.
Например, в массив из нескольких миллионов разных строк длиной 1 млн символов нужно добавить еще одну, при условии, что там ее еще нет. Чтобы не заниматься посимвольным сравнением каждой строки, можно предварительно вычислить хэш каждой из них, и уже сделать сравнение по нему. Вся работа упрощается и ускоряется в разы.
Проверка целостности данных при передаче
Для таких проверок часто используются простые хэш-функции.
Например, один пользователь передает другому определенный массив данных, а затем хэш от него. Получатель информации, захэшировав информацию у себя и сравнив хэши, может удостовериться, что он получил именно те данные, которые были отправлены.
В технологии блокчейн хэш также используется для проверки целостности данных. Хэш выступает гарантией целостности цепочки транзакций (платежей) и защищает ее от несанкционированных изменений. Благодаря ему и распределенным вычислениям взломать блокчен очень сложно.
Шифрование
На практике некоторые хэш-функции также используются для шифрования. Благодаря практически полностью хаотичному соответствию хэшей исходным данным, практически невозможно вычислить начальный массив данных. Такие хэш-функции должны быть очень стойкими к коллизиям, т.е. должна обладать минимальной вероятностью получения двух одинаковых хэшей для двух разных массивов данных. Расчеты по таким алгоритмам более сложные и требует больше времени, но зато отличаются надежностью.
Электронные цифровые подписи
Использование хэша в данной технологии позволяет пользователю, который подписывает документ, быть уверенным, что он подписывает именно тот документ, который требуется. Также хэш используется при формировании электронной цифровой подписи и аутентификации пользователей.
Хранение паролей
Для доступа к сайтам и серверам по логину и паролю тоже часто используют хэширование.
Пользователь регистрируется на сайте:
- Заполняет форму регистрации, включая поле Пароль,
- Пароль обрабатывается хэш-функцией и помещается в базу данных,
- Оригинальное значение пароля нигде не используется.
Пользователь входит на сайт:
- Вводит свой логин и пароль,
- Пароль хэшируется и сравнивается с данными базы,
- Если хэши совпадают, пользователя заходит на сайт.
(Голосов: 17, Рейтинг: 4.53)
|