比特币相关技术.小白学区块链03

4.2 Hash算法

  • 两个问题:隐私 和 快速对账

  • 摘要算法:世界上没有两片完全相同的叶子,提取叶子的特点就是摘要

  • hash算法:可以将任意数据 生成 固定长度 的 16进制 字符串 【在线工具

    并且,只要数据一样,那么不管计算多少次都会获得同一个 16进制 字符串

  • 常见hash算法:md5,sha1,sha256,sha512 等,都是摘要算法(Message Digest)

    如:

1535684187189.png

注意:比特币使用的是 sha256 算法

  • 碰撞可能性:不同内容生成同一个hash值的可能性

    比特币用sha256算法:

    2的256次方 -> 1.157920892373162e+77 -> 比宇宙中原子的数量还多

    转成 二进制 就是 256位的数值 (1个十六进制数 得用 4个二进制数 表示)

    64个十六进制数
    96DBE8599CCA83C9487B39FF14D6A224B488E9AC8A676DEBCC0DFAC53615208B
    ​ |

    256个二位数
    1001011011011011 1110100001011001
    1001110011001010 1000001111001001
    0100100001111011 0011100111111111
    0001010011010110 1010001000100100
    1011010010001000 1110100110101100
    1000101001100111 0110110111101011
    1100110000001101 1111101011000101
    0011011000010101 0010000010001011

  • 不可逆

1535686810813.png
1535686650110.png
  • 小结:为了安全起见,现在一般使用 sha256 算法

4.3 密码学

4.3.1 对称加密
  • 使用 同一个密钥 进行 加密 和 解密,这种加密方法称为 对称加密,也称为 单密钥加密
  • 算法:DES、3DES、AES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK
对称加密
  • 特点:

    加解密使用 相同 秘钥
    高效,适用于大量数据的加密场景
    算法公开,安全性取决于秘钥大小,但秘钥越大效率越低,需要权衡在安全和效率中做权衡

  • 缺点:

    算法本身安全,但使用场景不够安全,因为解密和加密都是同一个秘钥

4.3.2 非对称加密
  • 使用 匹配的一对密钥 来分别进行加密和解密,这两个秘钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)

  • 注意:公钥加密的数据 只能 用 对应的私钥解密,同理,私钥加密的数据 只能用 对应的公钥解密

  • 算法:RSA、ECC、Elgamal、背包算法、Rabin、D-H 等

    • RSA算法,网易公开课的介绍视频 链接
    • ESS算法,椭圆曲线算法(比特币,巧妙避开美国NSA后门,V神认为是巧合)
  • 用法:

    • 准备工作:

      1.生成一对匹配的 私钥 和 公钥 (ps:公钥其实是根据私钥生成的)

      2.将公钥公布给外界

非对称加密
  • 用法1. 公钥加密 - 用来针对互联网上加密数据传递

    Linda 用 James的公钥 对数据进行加密,然后发给 James,James用自己的私钥解密

非对称加密-01生成密钥对
> 因为一个公钥加密的数据 只有 对应的 私钥才能解密,所以密文很安全
> 补充:如果要在网络上相互发送密文,可以让对方也发对方的公钥过来,用对方的公钥来加密
  • 用法2. 私钥签名 - 目的是为了将明文公布给别人,同时证明是自己发的;也可以防止明文被篡改。

    第一步: James 用 James的私钥 对明文的hash值进行加密,把密文(签名)和明文一起发给 Linda

私钥签名
**第二步:** Linda 用 `James的公钥` 进行解密,解密后的明文hash值 和 接收到的明文的hash值进行对比,如果一样则是 James 发的
公钥解密和校验
  • 特点:

    安全性高

    加解密复杂,效率低

4.3.3 小结
  • 对称加密:加密与解密 使用的是同样的密钥,所以速度快,但由于需要将密钥在网络传输,所以安全性不高

  • 非对称加密:使用唯一匹配的公钥与私钥,所以安全性高,但加密与解密速度慢

  • 解决的办法:将 对称加密的密钥 使用 非对称加密的公钥 进行加密,然后发送出去,接收方使用 私钥 进行解密得到 对称加密的密钥,然后双方可以使用对称加密来进行沟通

1535795321167.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容