Хеширование

Cryptographic hashing генерирует digest фиксированной длины из входных данных любого размера, обладая свойствами детерминизма, необратимости и устойчивости к коллизиям, что обеспечивает целостность данных и аутентификацию.

Криптографическая хеш-функция принимает входные данные произвольной длины и возвращает digest фиксированной длины. Она характеризуется детерминизмом, фиксированным размером вывода и односторонностью (one-wayness). Помимо детерминизма и фиксированной длины, криптографические хеш-функции стремятся обеспечить устойчивость к поиску прообраза (preimage resistance) (по заданному digest найти прообраз невозможно), устойчивость к поиску второго прообраза (second-preimage resistance) (невозможно найти другой вход, дающий тот же digest) и устойчивость к коллизиям (collision resistance) (сложно найти два входных значения, которые дают одинаковый digest). Они разработаны для эффективного вычисления, а выходной digest должен демонстрировать лавинный эффект (avalanche effect): небольшое изменение входных данных приводит к значительно отличающемуся digest. Они используются для проверки целостности данных, цифровых подписей и хеширования паролей, когда это уместно. Примечание: nonce не является свойством самой хеш-функции; он может использоваться в протоколах для добавления соли (salt) или изменения контекста хеширования, но не является частью основных свойств хеш-функции.

        graph LR
  Center["Хеширование"]:::main
  Rel_iteration["iteration"]:::related -.-> Center
  click Rel_iteration "/terms/iteration"
  Rel_hash_function["hash-function"]:::related -.-> Center
  click Rel_hash_function "/terms/hash-function"
  Rel_consensus_mechanism["consensus-mechanism"]:::related -.-> Center
  click Rel_consensus_mechanism "/terms/consensus-mechanism"
  classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
  classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
  classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
  classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
  linkStyle default stroke:#4b5563,stroke-width:2px;

      

🧠 Проверка знаний

1 / 1

🧒 Простыми словами

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

🤓 Expert Deep Dive

Надежный хеш обладает свойством устойчивости к коллизиям — невозможно найти два разных файла, которые дают одинаковый хеш. В блокчейне хеширование используют для создания Деревьев Меркла, что позволяет быстро проверять целостность миллионов транзакций, проверяя только один 'Корневой хеш'.

📚 Источники