椭圆曲线加密算法代码.doc

椭圆曲线加密算法代码.doc

ID:56923390

大小:47.50 KB

页数:7页

时间:2020-07-24

椭圆曲线加密算法代码.doc_第1页
椭圆曲线加密算法代码.doc_第2页
椭圆曲线加密算法代码.doc_第3页
椭圆曲线加密算法代码.doc_第4页
椭圆曲线加密算法代码.doc_第5页
资源描述:

《椭圆曲线加密算法代码.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、椭圆曲线加密算法代码及解析在椭圆曲线加密中,利用了某种特殊形式的椭圆曲线,即定义在有限域上的椭圆曲线。其方程如下:y2=x3+ax+b(modp)这里p是素数,a和b为两个小于p的非负整数,它们满足:4a3+27b2(modp)≠0其中,x,y,a,b∈Fp,则满足式(2)的点(x,y)和一个无穷点O就组成了椭圆曲线E。椭圆曲线离散对数问题ECDLP定义如下:给定素数p和椭圆曲线E,对Q=kP,在已知P,Q的情况下求出小于p的正整数k。现在我们描述一个利用椭圆曲线进行加密通信的过程:1、用户A选定一条椭圆曲线Ep(a,b),并取椭圆曲线上一点,作为基点G。2、用户A选择一个私有

2、密钥k,并生成公开密钥K=kG。3、用户A将Ep(a,b)和点K,G传给用户B。4、用户B接到信息后,将待传输的明文编码到Ep(a,b)上一点M(将M转化为十进制整数m,然后令椭圆曲线中点的横坐标为m,根据曲线方程计算出纵坐标,便得到了一个点。),并产生一个随机整数r(r

3、分P=Q和P不等于Q时。2、求M的过程中进行求模运算。第一,将分数利用最小公倍数求模。第二,负数求模,先将负号拿出来,求完再将负号加上。根据公式将λ解出。3、将X3Y3求出。循环算出nG,求出C1C2(密文)。C1=rG,C2=M+rK。M为明文,公开密钥K=kG代码部分:#includeusingnamespacestd;//求两数的最小公倍数intf1(inta,intb){intc=a;while(c%a!=0

4、

5、c%b!=0)c++;returnc;}//求modintmod(inta,intb){intc;if(a>0)c=a%b;else{whi

6、le(a

7、mod(b,p);}else{b1=y2-y1;b2=x2-x1;if(b1<0)b1=-mod(-b1,p);elseb1=mod(b1,p);if(b2<0){b2=mod(-b2,p);q=-f1(b2,p+1)/b2;}else{b2=mod(b2,p);q=f1(b2,p+1)/b2;}b=b1*q;b=mod(b,p);}returnb;}//求两点横坐标的和intsumx(intx1,inty1,intx2,inty2,intk,inta,intp){intx3,y3,i;if(k==1){x3=(f2(x1,y1,x2,y2,a,p))*(f2(x1,y1,x2

8、,y2,a,p))-x1-x2;x3=mod(x3,p);}else{for(i=1;i<=k-1;i++){x3=(f2(x1,y1,x2,y2,a,p))*(f2(x1,y1,x2,y2,a,p))-x1-x2;x3=mod(x3,p);y3=(f2(x1,y1,x2,y2,a,p)*(x1-x3))-y1;y3=mod(y3,p);x2=x1;x1=x3;y2=y1;y1=y3;}}returnx3;}//求两点纵坐标的和intsumy(intx1,inty1,intx2,inty2,intk,inta,intp){intx3,y3,i,u=x1,v=y1,m=x2,n=

9、y2;if(k==1){x3=f2(u,v,m,n,a,p)*f2(u,v,m,n,a,p)-u-m;x3=mod(x3,p);y3=f2(u,v,m,n,a,p)*(u-x3)-v;y3=mod(y3,p);}else{for(i=1;i<=k-1;i++){x3=f2(u,v,m,n,a,p)*f2(u,v,m,n,a,p)-u-m;x3=mod(x3,p);y3=f2(u,v,m,n,a,p)*(u-x3)-v;y3=mod(y3,p);m=x1;u=x3;n=y1;v=y3;}}re

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

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

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