
哈希算法在区块链中解决什么问题
NIST的FIPS 180-4安全哈希标准说明,哈希算法可生成消息摘要,用于检测消息在摘要生成后是否发生变化。这为理解区块链中的数据校验提供了基础:验证者按照相同规则重新计算摘要,再与参考值比较。
比特币开发者文档描述了具体应用:区块头包含前一区块头的哈希和交易对应的默克尔根,区块头经过序列化后参与工作量证明计算。这些结构把交易数据、区块内容与前后区块的关联纳入校验范围。

哈希是不是加密,能否还原原文
哈希生成摘要,没有用于解密还原消息的配套密钥。它适合做数据校验,但不能直接承担保密功能。公开数据即使附带哈希,原有内容仍然公开。

难以从摘要还原输入,也不意味着可以隐藏所有简单输入。如果候选内容很少,别人仍可逐一计算并比对摘要。因此,不能仅凭使用了哈希就认定敏感信息受到保护。
摘要相同是否代表数据绝对可信
哈希输出的长度有限,不同输入可能产生相同摘要,这称为碰撞。安全哈希的目标之一,是让寻找碰撞在计算上足够困难,不能将其理解为数学上绝无碰撞。
摘要比对还依赖可信的参考值。如果数据和参考摘要一起被替换,仅比较两者无法证明内容真实。哈希校验用于检查一致性,身份认证、授权及业务有效性需要其他验证机制。
为什么同样的数据会算出不同结果
哈希处理的是具体字节。文本编码、空格、换行、字段顺序或数字表示方式不同,都可能改变实际输入。排查差异时,应先核对算法和完整输入字节,再检查结果的显示方式。
比特币区块头采用规定的80字节序列化格式,并使用双重SHA-256计算。实现时还要区分原始字节与十六进制文本,以及内部字节序与显示顺序;把摘要的文本表示再次哈希,通常不等于对摘要原始字节再次哈希。
有了哈希是否就无法修改区块链
修改被哈希覆盖的数据,会使原有摘要关联失效,但修改者也可以重新计算摘要。区块链对历史修改的约束,还取决于共识机制和节点验证规则,不能把全部安全性归因于哈希算法。
在比特币工作量证明中,区块头哈希需要不大于规定目标值;满足这一条件也不等于区块全部有效,交易及其他共识规则仍需验证。默克尔根的复算同样依赖交易顺序、字节表示和树的构造规则。这些具体规则适用于相应协议,不能直接推广到所有区块链。