- 16
- 0
- 约 7页
- 2020-12-09 发布于浙江
- 举报
椭圆曲线加密算法代码及解析
在椭圆曲线加密中,利用了某种特殊形式的椭圆曲线,即定义在有限域上的椭圆曲线。其方程如下:
y2=x3+ax+b(mod p)
这里p是素数,a和b为两个小于p的非负整数,它们满足:
4a3+27b2(mod p)≠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选择一个私有密钥k,并生成公开密钥K=kG。
3、用户A将Ep(a,b)和点K,G传给用户B。
4、用户B接到信息后 ,将待传输的明文编码到Ep(a,b)上一点M(将M转化为十进制整数m,然后令椭圆曲线中点的横坐标为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进行解码就可以得到明文。
过程分析:
1、 将给出的椭圆上的两点G,K相加求得第三点M。P跟Q有两种情况。分P=Q和P不等于Q时。
2、 求M的过程中进行求模运算。第一,将分数利用最小公倍数求模。第二,负数求模,先将负号拿出来,求完再将负号加上。根据公式将λ解出。
3、 将X3Y3求出。循环算出nG,求出C1C2(密文)。C1=rG,C2=M+rK。M为明文,公开密钥K=kG
代码部分:
#include iostream
using namespace std;
//求两数的最小公倍数
int f1(int a, int b)
{
int c=a;
while( c%a!=0 || c%b!=0)
c++;
return c;
}
//求mod
int mod (int a, int b)
{
int c;
if(a0)
c=a%b;
else
{
while(ab)
a=a+b;
c=a%b;
}
return c;
}
//求λ
int f2(int x1,int y1,int x2,int y2,int a,int p)
{
int b,b1,b2,q;//b1为分子,b2为分母
if( x1==x2 y1==y2)//如果λ两点相等
{
b1=3*x1*x1+a;
b2=2*y1;
if(b10)
b1=-mod(-b1,p);
else
b1=mod(b1,p);
if(b20)
{
b2=mod(-b2,p);
q=-f1(b2,p+1)/b2;
}
else
{
b2=mod(b2,p);
q=f1(b2,p+1)/b2;
}
b2=f1(b2,p+1)/b2;
b=b1*b2;
b=mod(b,p);
}
else
{
b1=y2-y1;
b2=x2-x1;
if(b10)
b1=-mod(-b1,p);
else
b1=mod(b1,p);
if(b20)
{
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);
}
return b;
}
//求两点横坐标的和
int sumx(int x1,int y1,int x2,int y2,int k,int a,int p)
{
int x3,y3,i;
if(k==1)
{
x3=(f2(x1,y1,x2,y2,a,p))*(f2(x1,y1,x2,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;
您可能关注的文档
最近下载
- 2024北京市公务员考试【省直+行政执法+综合管理岗+行测】4套真题及答案.doc VIP
- DELLV3450拆机更换电脑硬盘详细过程.doc VIP
- JGJ 80-2016 建筑施工高处作业安全技术规范.docx VIP
- 2025年无人机驾驶员执照动力系统基础构成与工作原理专题试卷及解析.pdf VIP
- ISO 23799-2024 Ships and marine technology — Assessment of onboard cyber safety 舶与海洋技术ーー船上网络安全评估.pdf
- (一模)长沙市2026年高三年级模拟考试物理试卷(含答案解析).pdf
- 换热器清洗方案.doc VIP
- 防车辆冲撞应急演练方案.docx VIP
- 骆驼祥子读书笔记每一章.docx VIP
- (10)服务业与交通运输业—2021年高考地理真题模拟试题.doc VIP
原创力文档

文档评论(0)