搜狐首页 科技 法医秦明

手机搜狐

SOHU.COM

对称密码ECC

椭圆曲线指的是由韦尔斯特拉斯(Weierstrass)方程y2+a1xy+a3y=x3+a2x2+a4x+a6所确定的平面曲线。若F是一个域,ai∈F,i=1,2,…,6。满足上式的数偶(x,y)称为F域上的椭圆曲线E上的解点。F域可以是有理数域,还可以是有限域GF(Pr)。椭圆曲线通常用E表示。除了曲线E的所有点外,尚需加上一个叫做无穷远点的特殊∞。

1985年,Neal Koblitz和Victor S. Miller分别建议将椭圆曲线(elliptic curves)应用到密码学中。研究发现,有限域上的椭圆曲线上的一些点构成交换群,而且其离散对数问题是难解的。于是可以在此群上定义ELGAMAL密码。并称之为椭圆曲线密码(Elliptic curve cryptography,ECC)。目前,椭圆曲线密码已成为除RSA密码之外呼声最高的公钥密码之一。

ECC加解密过程:

1、用户A选定一条适合加密的椭圆曲线Ep(a,b)(如:y2=x3+ax+b),并取椭圆曲线上一点,作为基点G。

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

3、用户A将Ep(a,b)和点K,G传给用户B。

4、用户B接到信息后 ,将待传输的明文编码到Ep(a,b)上一点M,并产生一个随机整数r(rn)。

5、用户B计算点C1=M+rK;C2=rG。

6、用户B将C1、C2传给用户A。

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

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

再对点M进行解码就可以得到明文。

密码学中,描述一条Fp上的椭圆曲线,常用到六个参量:

T=(p,a,b,G,n,h)。

(p 、a 、b 用来确定一条椭圆曲线,G为基点,n为点G的阶,h 是椭圆曲线上所有点的个数m与n相除的整数部分)

这几个参量取值的选择,直接影响了加密的安全性。参量值一般要求满足以下几个条件:

1、p 当然越大越安全,但越大,计算速度会变慢,200位左右可以满足一般安全要求;

2、p≠n×h;

3、pt≠1 (mod n),1≤t20;

4、4a3+27b2≠0 (mod p);

5、n 为素数;

6、h≤4。

打开vc++6.0,打开虚拟机中所给出的参考代码(d:tools\BUPT1024B\ecc)并编译通过。

在d盘根目录下新建一test.doc文档,内容任意,作为测试文档。

加密过程如下:

解密过程如下:

可以打开文档,查看是否成功加解密。

Test密文文件:

Test密文解密文件

精选