Diffie-Hellman

迪菲-赫尔曼 密钥交换算法

p,g 通信双方已知,p是质数,g是p的 primative root(什么鬼 :),  0< g <p

Alice:  取一随机数a(私钥), 算 A=g^a mod p, 发给 Bob

Bob:  取一随机数b, 算 B=g^b mod p, 发给 Alice

然后两边算共享密钥:  

     Alice:  S1 = B^a mod p

     Bob:   S2 = A^b mod p

数学上可证明: S1 = S2

p, a, b 应尽量大,比如150位,200位, g通常只使用2,3或5

Ellipic Curve

椭圆曲线算法: y^2 = x^3 + ax + b

Ellipic Curve Diffie-Hellman

已知椭圆曲线的G(generator),

Alice的私钥: dA,  公钥 QA = dA * G,    Bob 私钥:dB, 公钥:QB = dB * G

互换公钥后:

Alice 计算:  dA * QB

Bob 计算: dB * QA

可证明二者相等:  dA * dB * G = dB * dA * G

计算的结果是一个点(px, py)的坐标,  shared secret S = px

原文地址:https://www.cnblogs.com/bear129/p/11811349.html