Merkle Tree 入门

基础的密码学知识

在阅读本文之前,建议大家可以先 Google 了解一下非对称加密算法和 Hash 算法,这里就不详细介绍了。下面我们只描述一下非对称加密传输信息的一个大致流程:

  1. Sender(发送者) 首先用相关的 hash 算法对要发送的 message(信息) 进行 hash 生成 digest (数字摘要),然后用 private key(私钥) 对 digest 加密生成 digital signature(数字签名)。
  2. Recevier(接受者) 会收到 message 和 digital signature 以及 public key(在区块链中 public key 是公开,类似于 https 则会引入一个第三方权威中心化机构 CA 来颁发确认 public key 避免中间人攻击)。用 public key 对 digital signature 解密生成 digest,然后用 hash 算法对 message 生成 digest,如果生成的 digest 一致的,则证明 message 是 public key 所有者发送的并且 origin message 没有被修改。

在比特中使用的 hash 算法是 SHA(Secure Hash Algorithm),其摘要长度为 256 bits,即 32个 字节,故称 SHA256,对于一个区块都会对其区块头(header)进行 double sha256。

在比特币中使用的非对称加密算法是 ECDSA, 椭圆曲线数字签名算法的原理这里就不介绍了。