椭圆曲线密码的C语言设计与实现

2018-12-17 16:35

计算机研究生开放研究 《椭圆曲线密码的C语言设计与实现》 美国GeneChiu基金资助

基于TOM算法库的ECC加密算法的C语言设计与实现 研究生 徐立均 内容:

一、源代码下载 二、ECC算法的设计思想

三、椭圆曲线参数的选取和基点的确定 四、椭圆曲线的点加和纯量乘法 五、加密文件的读入与输出 六、密文的存取和读入 七、ECC加密的实现

八、ECC解密的实现 九、测试结果及分析

一、源代码下载

本文使用了TOM算法库实现了椭圆曲线公钥密码体制,能对各类不同的磁盘文件进行加密和解密。

1 请下载可执行程序MY_ECC.exe,此程序无需任何额外的LIB或DLL,可在Windows下独立运行,运行情况如下:

2 请下载源代码source.rar:

编译此源代码需要使用TOM的高精度算法库

MathLib.lib

和相关的头文件

tommath.h tommath_class.h tommath_superclass.h

一并打包在source.rar中,请下载

3 对于TOM的高精度算法库的详细说明,请看本站C语言:

二、 ECC算法的设计思想

根据椭圆曲线进行加密通信的过程,首先选定一个适合加密的椭圆曲线Ep(a,b),并取椭圆曲线上一点,作为基点G。选择一个私有密钥k,并生成公开密钥K=kG。加密时,将明文编码到Ep(a,b)上一点M,并产生一个随机整数r(r < n)。计算点C1=M+rK;C2=rG。将C1、C2存入密文。解密时,从密文中读出C1、C2,计算C1-kC2,根据: C1-kC2=M+rK-k(rG)=M+rK-r(kG)=M, 解得的结果就是点M,即明文。

三、椭圆曲线参数的选取和基点的确定

并不是所有的椭圆曲线都适合加密,y^2=x^3+ax+b是一类可以用来加密的椭圆曲线,也是最为简单的一类。下面我们就选用

y^2=x^3+ax+b作为我们的加密曲线。这条曲线定义在Fp上:两个满足下列条件的小于p(p为素数)的非负整数a、b:4a3+27b2≠0 (mod p) 则满足下列方程的所有点(x,y),再加上 无穷远点∞ ,构成一条椭圆曲线。y^2=x^3+ax+b(mod p) 其中 x,y属于0到p-1间的整数,并将这条椭圆曲线记为Ep(a,b)。

参数P的选取:p 当然越大越安全,但越大,计算速度会变慢,200位左右可以满足一般安全要求;我们将p取为200比特位的素数。 参数a、b的选取:先随机产生小于P-1的正整数作为参数a,依据条件4a3+27b2≠0 (mod p)判断随机产生的小于P-1的正整数是否适合作为参数b.

基点的确定:随着参数a,b,p确定,这条曲线y^2=x^3+ax+b就定下来了。先随机产生0到p-1间的整数作为基点x坐标,计算x^3+ax+b的结果再开方就得出基点y坐标。 上述具体程序实现如下: …… while(1) {

//4a3+27b2≠0 (mod p)

GetPrime(b,40);//先随机产生一个参数B mp_expt_d(a, 3, &temp1); mp_sqr(b, &temp2);

mp_mul_d(&temp1, 4, &temp3);


椭圆曲线密码的C语言设计与实现.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:斗山移动动力成果展:P600AWCU移动式螺杆空压机

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: