1. 首页
  2. 比特币的哈希算法(比特币的密码学基础-哈希函数)

比特币的哈希算法(比特币的密码学基础-哈希函数)

1.哈希函数

区块链是比特币的核心技术,而区块链事实上是一条哈希链,通过哈希函数串联一块块历史数据。

2.哈希函数的定义

哈希又译为“散列”,哈希函数以任意长度的消息为输入,输出固定长度的消息摘要。例如:哈希函数SHA-256输出的哈希值为256 bit。通常情形下,哈希函数是一类压缩函数,它的值域远小于定义域,即一个消息摘要存在多个原像与之对应。

比特币系统中所应用的哈希函数还需要满足以下3个安全要求:

(1)对任意消息 m ,很容易计算出它的哈希值 y = h(m) ;

(2)由 y 得出 m 在计算上不可行(单向性或原像稳固性);

(3)已知消息 m ,很难找出另一个 消 息 n 使得 h(n)= h(m)(抗碰撞性)。

3.哈希校验

由于哈希函数具有单向性和抗碰撞性,因此可用于检验消息的完整性,即检验消息在传送过程中是否被篡改。该过程被称为哈希校验。效验步骤:假设 B 要发送一条消息 m 给 A,首先计算 m 的消息摘要y = h(m) ,并附在消息后面一起发出。A 收到消息 m′ 后,检验 h(m′)= y 。如果相等,由于哈希函数具有强抗碰撞性,A可在很大程度上相信消息在传送过程中没有被篡改。

4.哈希现金

哈希现金(Hashcash)最早是由ADAM B 提出的 ,其本质是一种PoW系统。用户A要求发给他的邮件的哈希值必须包含某段特定字符串,例如:用户 A 要求邮件的哈希值的前 8 位必须是 0,否则拒绝接收该邮件。那么发给 A 的邮件正文必须添加某些随机字符使得哈希值满足该要求,这个工作是没有捷径的,计算机必须不断循环进行如下步骤:随机选取某些字符,并将其串联到邮件末尾,计算串联后的邮件的哈希值,直到哈希值的前 8 位是 0 为止。当然,计算开销取决于计算机的算力,当要求的难度提升巨大时,想要通过随意转发垃圾邮件的方式完成 A 的要求的可能性几乎为零,从而达到了防止垃圾邮件的目的。

相关文章