首页 > 代码库 > ECC加解密过程(转)

ECC加解密过程(转)

ECC加解密过程:

不是所有的椭圆曲线都可以用来加密。Y^2=x^3+ax+b是一类可以用来加密的椭圆曲线,也是最为简单的一类。

考虑等式: K=kG  [其中 K,GEp(a,b)上的点,k为小于nn是点G的阶)的整数]

不难发现,给定kG,根据加法法则,计算K很容易;但给定KG,求k就相对困难了。 这就是椭圆曲线加密算法采用的难题。我们把点G称为基点(base point),kk<nn为基点G的阶)称为私有密钥(privte key),K称为公开密钥(public key)

现在我们描述一个利用椭圆曲线进行加密通信的过程:

   1、用户A选定一条椭圆曲线Ep(a,b),并取椭圆曲线上一点,作为基点G

   2、用户A选择一个私有密钥k,并生成公开密钥K=kG

   3、用户AEp(a,b)和点KG传给用户B

   4、用户B接到信息后 ,将待传输的明文编码到Ep(a,b)上一点M(编码方法很多,这里不作讨论,主要是将明文数据类型转成比特串),并产生一个随机整数rr<n)。

   5、用户B计算点C1=M+rKC2=rG

   6、用户BC1C2传给用户A

   7、用户A接到信息后,计算C1-kC2,结果就是点M。因为

          C1-kC2=M+rK-k(rG)=M+rK-r(kG)=M

      再对点M进行解码(按照刚才的编码方法逆向解码)就可以得到明文

ECC加解密过程(转)