Криптографическая хеш-функция (Cryptographic hash function)

Главное — по хешу невозможно узнать исходные данные, но хеш всегда одинаков для одного и того же сообщения.

Например, слово bitcoin всегда даст один и тот же хеш, но если изменить хотя бы одну букву — хеш полностью изменится.

Зачем нужна хеш-функция

Она используется в блокчейне для:

  • проверки данных — если данные изменились, хеш тоже меняется
  • защиты сети — подделать запись в блокчейне невозможно, потому что изменится весь хеш
  • майнинга — майнеры ищут нужный хеш, чтобы создать новый блок
  • удобного хранения информации — хеш короче и легче, чем оригинальные данные

Как работает хеширование

  1. На вход подаются данные любого размера: текст, файл, транзакция.
  2. Алгоритм обрабатывает их.
  3. На выходе выдается хеш — строка фиксированной длины.

Примеры популярных алгоритмов: SHA-256, Keccak-256, Blake2b.

Bitcoin использует SHA-256, Ethereum — Keccak-256.

Основные свойства хеш-функции

Чтобы алгоритм считался надежным, он должен быть:

  • односторонним — нельзя получить исходные данные из хеша
  • устойчивым к совпадениям — два разных сообщения почти невозможно свести к одинаковому хешу
  • чувствительным — даже маленькое изменение полностью меняет хеш
  • быстрым — хеш вычисляется за доли секунды

Простой пример из блокчейна

В каждом блоке Bitcoin есть хеш предыдущего блока. Если кто-то изменит один блок, его хеш станет другим, и цепочка сломается так сказать..

Именно поэтому блокчейн так сложно подделать.

Майнеры EMCD, например, в процессе добычи Bitcoin ищут правильный хеш, который подходит под текущую сложность сети.

FAQ

Можно ли изменить хеш, не меняя данные?

Нет.

Почему хеши выглядят как случайный набор символов?

Так обеспечивается безопасность — результат нельзя предсказать.

Зачем нужна стойкость к совпадениям?

Чтобы разные данные не имели одинакового хеша — иначе безопасности не будет.