【区块链基础】1——密码学

加密哈希函数 cryptographic hash function

  • 性质1:碰撞阻力 collision resistance
    如果无法找到两个值 x x x 和 y y y , x ≠ y x\neq y x​=y,使得 H ( x ) = H ( y ) H(x) = H(y) H(x)=H(y),则称哈希函数 H H H 具有碰撞阻力。没有高效的方法可以人为制造哈希碰撞。
  • 性质2:隐秘性 hiding
    哈希函数计算过程单向,若仅仅知道哈希函数的输出 y = H ( x ) y = H(x) y=H(x), 无法通过 y y y 倒推出 x x x 的值。
  • 性质3:谜题友好 puzzle friendly
    没有一个解决策略比只是随机地尝试 x x x 取值来求得给定 y y y 更好。

比特币中使用的哈希函数为SHA-256

数字签名 digital signature

数字签名是非对称加密的一种应用方式。数学上,可以通过一个简单公式来表示,整个数字签名的大概流程如下:

hash:    x = hash(data)
send:    c(x) and data
------- network -------
receive: c(x) and data
verify:  d(c(x)) = x = hash(data)

【区块链基础】1——密码学

例:

  1. Alice 需要转 100 元电子货币给 Bob。Bob 需要一种手段,验证该交易是来自 Alice,且 Alice 不能抵赖。
  2. Alice 写好交易信息 data: Alice 给 Bob 100 元电子货币。
  3. Alice 使用哈希算法生成交易信息的哈希值 x = hash(data)。
  4. Alice 通过通过随机数生成器生成一对秘钥,其中一个作为公钥 d,一个作为私钥 c。
  5. Alice 使用私钥 c 对交易信息 x 进行签名,得到数字签名 c(x)。
  6. Alice 使用互联网将数字签名 c(x) 和交易信息 data 传递给 Bob。
  7. Bob 使用公钥 d,对数字签名进行解密 d(c(x)) 得到交易信息哈希值 x。
  8. Bob 用公钥 d 解密数字签名 c(x) 的值得到交易信息的哈希值 x。
  9. Bob 用哈希算法生成交易信息的哈希值 hash(data)。
  10. 如果 Bob 生成的交易信息的哈希值 hash(data) 等于 Alice 生成的交易信息的哈希值 x ,那么 Alice 拥有私钥,否则 Alice 没有私钥。
  11. 如果 Alice 抵赖,任何人都可重复 Bob 的校验步骤,并确认交易 data:Alice 给 Bob 100 元电子货币。

参考:比特币的交易-数字签名(一)

上一篇:将win10激活为专业工作站版并且永久激活(图文详细教程)


下一篇:高级程序员——面试的问题系列:密码算法的想干问题