Хешування
Cryptographic hashing генерує digest фіксованої довжини з вхідних даних будь-якого розміру, з властивостями детермінізму, незворотності та стійкості до колізій, що забезпечує цілісність даних та автентифікацію.
Криптографічна хеш-функція приймає вхідні дані довільної довжини та повертає digest фіксованої довжини. Вона характеризується детермінізмом, фіксованим розміром вихідних даних та односторонністю. На додаток до детермінізму та фіксованої довжини, криптографічні хеш-функції спрямовані на забезпечення стійкості до знаходження першообразу (preimage resistance) (враховуючи digest, знайти першообраз неможливо), стійкості до знаходження другого першообразу (second-preimage resistance) (знайти інший вхід з таким самим digest неможливо) та стійкості до колізій (collision resistance) (важко знайти два входи, які призводять до однакового digest). Вони розроблені для ефективного обчислення, а вихідний digest повинен демонструвати avalanche effect: невелика зміна у вхідних даних призводить до значно відмінного digest. Вони використовуються для перевірки цілісності даних, цифрових підписів та хешування паролів, коли це доречно. Примітка: nonce не є властивістю самої хеш-функції; він може використовуватися в протоколах для додавання солі (salting) або варіації контекстів хешування, але не є частиною основних властивостей хеш-функції.
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
Надійний хеш має властивість стійкості до колізій — неможливо знайти два різних файли, які дають однаковий хеш. У блокчейні хешування використовують для створення Дерев Меркла, що дозволяє швидко перевіряти цілісність мільйонів транзакцій, перевіряючи лише один 'Кореневий хеш'.