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

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

ID:56923389

大小:126.00 KB

页数:19页

时间:2020-07-24

椭圆曲线密码的C语言设计与实现.doc_第1页
椭圆曲线密码的C语言设计与实现.doc_第2页
椭圆曲线密码的C语言设计与实现.doc_第3页
椭圆曲线密码的C语言设计与实现.doc_第4页
椭圆曲线密码的C语言设计与实现.doc_第5页
资源描述:

《椭圆曲线密码的C语言设计与实现.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、计算机研究生开放研究《椭圆曲线密码的C语言设计与实现》美国GeneChiu基金资助基于TOM算法库的ECC加密算法的C语言设计与实现研究生徐立均内容:一、源代码下载二、ECC算法的设计思想三、椭圆曲线参数的选取和基点的确定四、椭圆曲线的点加和纯量乘法五、加密文件的读入与输出六、密文的存取和读入七、ECC加密的实现八、ECC解密的实现九、测试结果及分析  一、源代码下载本文使用了TOM算法库实现了椭圆曲线公钥密码体制,能对各类不同的磁盘文件进行加密和解密。1请下载可执行程序MY_ECC.exe,此程序无需任何额外的LI

2、B或DLL,可在Windows下独立运行,运行情况如下:     2请下载源代码source.rar:  编译此源代码需要使用TOM的高精度算法库MathLib.lib和相关的头文件tommath.htommath_class.htommath_superclass.h一并打包在source.rar中,请下载3对于TOM的高精度算法库的详细说明,请看本站C语言:  二、ECC算法的设计思想  根据椭圆曲线进行加密通信的过程,首先选定一个适合加密的椭圆曲线Ep(a,b),并取椭圆曲线上一点,作为基点G。选择一个私有密钥

3、k,并生成公开密钥K=kG。加密时,将明文编码到Ep(a,b)上一点M,并产生一个随机整数r(r

4、条曲线定义在Fp上:两个满足下列条件的小于p(p为素数)的非负整数a、b:4a3+27b2≠0(modp)则满足下列方程的所有点(x,y),再加上无穷远点∞,构成一条椭圆曲线。y^2=x^3+ax+b(modp)其中x,y属于0到p-1间的整数,并将这条椭圆曲线记为Ep(a,b)。  参数P的选取:p当然越大越安全,但越大,计算速度会变慢,200位左右可以满足一般安全要求;我们将p取为200比特位的素数。  参数a、b的选取:先随机产生小于P-1的正整数作为参数a,依据条件4a3+27b2≠0(modp)判断随机产生

5、的小于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(modp)  GetPrime(b,40);//先随机产生一个参数B  mp_expt_d(a,3,&temp1);  mp_sqr(b,&temp2);  mp_mul_d(&temp1,4,&temp3);  mp_mul_d

6、(&temp2,27,&temp4);  mp_add(&temp3,&temp4,&temp5);  mp_mod(&temp5,p,&temp);  if(mp_cmp(&temp,&compare)!=0)  {break;//满足条件跳出循环  }}  //y2=x3+ax+b,随机产生X坐标,根据X坐标计算Y坐标  GetPrime(x1,30);//随机产生30比特长的X坐标  mp_expt_d(x1,3,&temp6);  mp_mul(a,x1,&temp7);  mp_add(&temp6,&te

7、mp7,&temp8);  mp_add(&temp8,b,&tempx);  mp_sqrt(&tempx,y1);//得到Y坐标  ……..私钥的确定:随机选取1到P-1之间的素数作为私钥d.公钥的确定:由d乘我们所确定的基点得到公钥K,即K=dG。  四、椭圆曲线的点加和纯量乘法  对于一般的椭圆曲线方程y^2+a1xy+a3y=x^3+a2x^2+a4x+a6,设点P(x1,y1),Q(x2,y2)的和R(x3,y3)的坐标。R(x3,y3)的计算公式如下:x3=k^2+ka1+a2+x1+x2;y3=k(x

8、1-x4)-y1-a1x4-a3;其中k=(y1-y2)/(x1-x2)当P≠Q时k=(3x2+2a2x+a4-a1y)/(2y+a1x+a3)当P=Q时,对于椭圆曲线方程Y^2=X^3+aX+b,上述的公式变为:x3=θ2-x1-x2;y3=θ(x1-x3)-y1其中θ=(y1-y2)/(x1-x2)当P≠Q时;θ=(3x1^2-a)/2y1

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。