工作量证明算法

哈希算法利用任意长度的数据作为输入,生成一个固定长度的确定结果,即输入数据的数字指纹。对于任意特定的输入,结果总是相同的,只要实现了相同哈希算法,都可以轻易计算并验证。加密哈希算法的关键特性是对于两个不同的输入,几乎不可能生成相同的指纹。作为推论,给定一个数字指纹,除了不断尝试各种输入,没有其他办法可以构造一个数据,使其哈希值与给定指纹相同。

若采用SHA256算法,不管输入的长度是多少,其输出总是256位。在例8-8中,我们利用Python解释器来计算短语“I am Satoshi Nakamoto”(我是中本聪)的SHA256哈希。

例8-8 SHA256示例

SHA256示例

8-8显示了“I am Satoshi Nakamoto”的哈希值计算结果:5d7c7ba21cbbcd75d14800b100252d5b428e5b1213d27c385bc141ca6b47989e。这个256位的数字就是短语的哈希或者摘要,它依赖短语中的所有部分。如果增加一个字母、标点符号,或任何其他字符,都会导致不同哈希的生成。

现在,如果我们改变短语,将会得到一个完全不同的哈希。我们试着加一个数字到短语的末尾,仍然使用简单的Python脚本进行计算,如例8-9所示。

例8-9 SHA256, 使用脚本通过迭代一个随机数产生多个哈希值

SHA256, 使用脚本通过迭代一个随机数产生多个哈希值

868区块链学习网为您整理《工作量证明算法》仅供参考。