哈希算法把任意长度的数据计算成固定长度摘要,常被称为数字指纹。它用于检查数据是否变化,但不能像加密那样用密钥还原原文。
区块链大量使用哈希函数来标识交易、连接区块和汇总数据。哈希只是基础工具之一,账本安全还依赖数字签名、节点验证与共识机制。

安全哈希函数通常关注以下性质:
碰撞在数学上必然存在,因为无限多种输入被映射到有限长度输出。密码学要求的是,在现实计算能力下难以找到可利用的碰撞,而非宣称碰撞绝不会出现。
加密的目标是保密。数据经密钥变换后,授权方可以解密并恢复原文。哈希的目标是生成摘要,正常情况下没有解哈希过程。
因此,把公开交易做哈希不会让交易内容自动变成秘密。攻击者若能猜到原始输入,仍可对猜测值重复计算并比较摘要。密码存储需要盐值和专门的慢哈希方案,不能简单套用区块链中的交易哈希做法。
许多网络对序列化后的交易或区块头计算哈希,生成交易哈希或区块哈希。浏览器可用它定位记录,但它只是标识,不是资产凭证,也不能用来撤回交易。
新区块通常保存父区块或前序区块的哈希。旧区块内容变化后,其哈希也会变化,后续区块保存的引用便不再匹配。

这种结构让改动容易被发现,但改写困难还来自后续区块、共识资源和其他节点保存的副本。只在一台电脑上把文件串成哈希链,并不会自动获得公有链的安全性。
默克尔树会逐层合并交易哈希,最终得到一个默克尔根。节点可以用一条较短的证明路径验证某笔交易是否被承诺在区块中,而不必为这次证明传输全部交易。进一步可查看区块结构深度解析。
在部分工作量证明网络中,矿工会反复调整区块头字段并计算哈希,寻找低于目标值的结果。这里的难度来自大量试算,与解密哈希无关。
不是。比特币的多个环节使用 SHA-256,以太坊常使用 Keccak-256,其他网络还可能采用不同算法或组合。名称相近也不代表实现完全相同,例如标准化 SHA3-256 与以太坊使用的 Keccak-256 不应混为一谈。
算法选择还会随用途变化。交易标识、地址生成、签名消息摘要和共识可能使用不同哈希函数。阅读协议时,应确认具体字段、编码方式与计算次数,而不是只记住一个算法名。
核对文件时,需要用相同算法对本地文件计算摘要,再与可信渠道发布的值逐字符比较。任何空格、换行、编码或文件内容变化都会影响结果。
核对链上交易时,应选择正确网络,把完整交易哈希粘贴到对应的区块链浏览器。不要只比较开头和结尾几个字符,也不要把地址、区块哈希与交易哈希混用。
哈希与签名经常协作,但职责不同。数字签名怎样证明授权,可继续阅读公私钥密码学。若要把这些组件放回完整系统中理解,可参阅区块链核心概念全解。
不能。相同摘要可强力说明文件内容一致,却不能证明发布者身份。若要验证来源,还需要可信渠道、数字签名或证书等身份机制。
正常实现下不会。交易哈希来自交易数据,私钥用于生成签名,不会直接写入哈希。但私钥生成或签名算法若实现错误,仍可能泄露密钥信息。
不一定。输出长度影响暴力搜索与碰撞难度,但算法设计、实现、使用方式和威胁模型同样重要。已经出现实际弱点的旧算法不应仅因输出看起来很长就继续使用。
一个页面可能同时展示交易哈希、区块哈希、父区块哈希、合约事件主题或内部数据摘要。它们对不同对象计算,必须结合字段名称判断用途。


