Криптографическое хеширование
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
Pre_cryptography["cryptography"]:::pre --> Center
click Pre_cryptography "/terms/cryptography"
Center --> Child_merkle_tree["merkle-tree"]:::child
click Child_merkle_tree "/terms/merkle-tree"
Rel_digital_signatures["digital-signatures"]:::related -.-> Center
click Rel_digital_signatures "/terms/digital-signatures"
Rel_proof_of_work["proof-of-work"]:::related -.-> Center
click Rel_proof_of_work "/terms/proof-of-work"
Rel_cryptographic_primitives["cryptographic-primitives"]:::related -.-> Center
click Rel_cryptographic_primitives "/terms/cryptographic-primitives"
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
## The Significance of SHA-256
SHA-256 is the beating heart of the Bitcoin network. It is used to create the linked 'chain' by including the previous block's hash in the current block, and it powers the Proof-of-Work mining system where miners compete to find a specific hash. Its 256-bit output provides 128-bit 'collision security,' which remains strong even against the most advanced classical computers.