ECC (椭圆曲线算法)
和 RSA 类似,也属于非对称加密算法,比 RSA 更新,相比 RSA 可以用更短的秘钥达到相同的安全程度。 😃
KEY(公钥)=key(私钥)G(椭圆曲线上的点)
由于椭圆曲线的特性,给定k
和G
可以计算出K
,但给定K
和G
无法计算出k
。
加密过程:
1.A选定一椭圆曲线
上的点 G
2.A创建私钥key
,生成公钥KEY = key*G
3.A将椭圆曲线
、KEY
、G
发送给B
4.B选择椭圆曲线
上的一点M
,产生一随机数r
5.B计算点C1=M+r*KEY
,C2=r*G
6.B把C1
,C2
发送给A
7.A计算C1 - key*C2 = M + r*KEY*G - key*r*G = M
DH (秘钥协商协议)
1.A和B协商使用两个确定的数 p = 23
和 g = 5
2.A创建一私钥a = 6
,计算 g^a mod p = 5^6 mod 23 = 8
(^次方,mod取余数)发送给B。
3.B创建一私钥b = 15
,计算 g^b mod p = 5^15 mod 23 = 19
发送给 A。
4.A计算B a mod p = 19^6 mod 23 = 2
,B计算A b mod p = 8^15 mod 23 = 2
ECDH(ECC&DH)
1.A选定一椭圆曲线
上的点 G
,创建私钥a
,计算 A(公钥) = a*G
。
2.同理B计算 B(公钥) = b*G
。
3.A将公钥A
发送给B,B将公钥B
发送给A。因为椭圆曲线的特性,已知公钥、G无法计算出私钥,所以这个过程是安全的。
4.A计算aB = abG。
5.B计算bA = baG。
6.A、B计算的结果相同。