Хеширование
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;
🧠 Проверка знаний
🧒 Простыми словами
🧼 Представьте блендер: вы бросаете туда яблоко и получаете стакан специфического пюре. Из пюре невозможно снова собрать яблоко. Но если вы добавите к следующему яблоку одну семечку, цвет пюре изменится на ярко-фиолетовый. Так вы узнаете, что 'вход' изменился. Это и есть хеш-функция.
🤓 Expert Deep Dive
Надежный хеш обладает свойством устойчивости к коллизиям — невозможно найти два разных файла, которые дают одинаковый хеш. В блокчейне хеширование используют для создания Деревьев Меркла, что позволяет быстро проверять целостность миллионов транзакций, проверяя только один 'Корневой хеш'.