ISheep

ISheep

Badminton | Coding | Writing | INTJ
github

椭圆曲线加密

如何生成地址?什么是非对称加密?

生成地址的步骤#

  1. 随机生成一个 256 位的私钥(32 字节)
  2. 通过椭圆曲线加密获取公钥
  3. 公钥经过两次 hash 函数 生成 20 字节的地址

椭圆曲线#

y2=x3+ax+by^{2} =x^{3} +ax+b

动画

其中私钥 K, 公钥 P。

在曲线上随机取一点 A (x,y),计算 Kx+Ky 等于 P。即 KA=P,其实 P 就是曲线上的一个坐标点。Bitcoin 中有一个公认的点 G 扮演点 A 的角色,也就是说随机点是公开的,G 相当于一个常数。

消息加密#

NP 问题:给定 P 和 G 很难求出 K,但是根据 K 和 G 可以很快验证 P 是正确的

有两个人 Alice,Bob 他们分别有自己的公钥私钥

  • Alice:Pa Ka
  • Bob: Pb Kb

Pa = Ka * G

Pb = Kb * G

其中公钥是公开的。也就说两人还能知道另一个信息

  • Alice: Ka * Pb = Ka * Kb * G
  • Bob : Kb * Pa = Kb * Ka * G

这两个信息是相等的,相当于这两个人的相同的 key,这个 key 就可以相当于是只属于这两个人的对称密钥。

当 Alice 想给 Bob 写信,用 Pb 加密信息,Bob 用 Kb 解密,即做一个可逆运算。

数字签名#

m:message

Alice 用 Ka 对 m 签名,m * Ka = N ,类似用私钥生成公钥(m 为 G)
对方想要验证这句话是 Alice 说的

m * Pa = m * G * Ka , 即 = G * N,由于 G 是公开的,所以很快就能验证 m 是否是 Alice 说的

参考视频

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。