区块链应用开发指南:业务场景剖析与实战
上QQ阅读APP看书,第一时间看更新

2.6.1 比特币中的哈希处理

加密Hash是一种将大量数据转换为难以模仿的短数据的方法。哈希主要与数字签名结合使用。这些功能可确保数据完整性,比特币网络中的哈希用于四个过程:

  • 编码钱包地址
  • 钱包之间的编码交易
  • 核实和验证钱包的账户余额;和共识机制
  • 工作证明

比特币网络使用SHA(安全哈希算法),例如SHA-256。哈希的一个重要特性是,如果改变一位输入数据,输出会发生显著变化,这使得大文本文件中的小变化很容易被检测到。从接下来的示例中可以看出,当我们只更改一个字母时,会生成完全不同的哈希。这基于所谓的“雪崩效应”,对于验证数据完整性非常有用。“雪崩效应”描述数学函数的行为,即使输入字符串中的轻微变化也会导致生成的hash值发生剧烈变化。这意味着在一个广告中,只要有一个单词,甚至一个逗号发生了改变,整个哈希就会改变。因此,文档的哈希值可以作为文档的加密等价物——数字fingerprint。这就是为什么单向hash函数是公钥加密的核心。在为文档生成数字签名时,我们不再需要使用发件人的私钥加密整个文档,这可能会花费大量时间,所以很有必要改为计算文档的哈希值。

“如何买比特币?”相应的SHA-256句子看起来像这样:

49c04bf3580376f81232d27c88de48255191f2486335dfd91a0856d216d66caa

如果我们只删除一个符号,例如问号“?”,哈希看起来则像这样:

0ffb7929ea94150e3aa93f06b81daedbaa501c671598236e63a1db32585b4640