Биткоин для всех. Популярно о первой распределенной одноранговой денежной системе - стр. 18
Итак, первое свойство хэша – его уникальность:
Каждому набору (массиву) информации присущ строго определенный, уникальный хэш.
Тем не менее, иногда встречаются т.н. коллизии – случаи, когда хеш-функция для разных входных блоков информации вычисляет одинаковые хэш-коды.
Математики-криптографы стараются создать такие хэш-функции, вероятность коллизий в которых стремилась бы к нулю.
Следует отметить, что функций, которые вычисляют хэш, существует множество. Но наиболее распространена (в частности, используется в протоколе блокчейна Биткоина) хэш-функция под названием SHA-256 (от Secure Hash Algorithm – безопасный алгоритм хеширования). Эта хэш-функция формирует хэш в виде строки из 64 символов (длина – 256 бит или 32 байта).
Попробуем при помощи функции SHA-256 получить хэш для заголовка этой главы («Хэширование: Просто и наглядно»).
Это будет:
Примечание: Здесь и далее с целью удобства представления на странице будем обрезать хэш до 44 символов, заканчивая троеточием.
А теперь изменим заголовок всего лишь на один символ – добавим знак восклицания в конце («Хэширование: Просто и наглядно!»).
Получилось:
Как видите, изменение всего лишь на один знак исходного массива информации привело к кардинальному изменению его хэша!
И это второе важное свойство хэша:
Это свойство важно при использовании хэширования в цифровой подписи, так как позволяет удостовериться, что подписанная информация не была изменена во время её передачи по каналам связи.
Третье важное свойство хэша вытекает из того, что хэш-функция необратима. Другими словами:
Из этого следует, что восстановить по хэшу соответствующий ему массив информации возможно только перебором всех возможных вариантов. Что практически невозможно, поскольку количество информации бесконечно!
Это свойство важно, поскольку делает взлом хэша (восстановление исходной информации по её хэшу) или невозможным, или весьма дорогостоящим занятием.
Еще одно важное свойство хэш-функций – это относительно высокая скорость работы.
Хэширование позволяет достаточно быстро вычислить искомый хэш из весьма большого массива входной информации.
Этим хэширование существенно отличается от кодирования (шифрования) и декодирования (дешифрования).
Хэширование или хэш-функция используется во многих алгоритмах и протоколах. В частности, в электронной цифровой подписи (ЭЦП) и