网络安全椭圆曲线加密算法C语言代码.txt
《网络安全椭圆曲线加密算法C语言代码.txt》由会员分享,可在线阅读,更多相关《网络安全椭圆曲线加密算法C语言代码.txt(3页珍藏版)》请在冰豆网上搜索。
#include
#include
typedefstructmixednum
{
intupnum;
intdownum;
}mixed;
intfunction_2(intm,intn)
{
intj;
intk;
for(j=-1;;j--)
{
for(k=0;k {
if((j*n)+k==m)
returnk;
}
}
}
intfunction_1(mixedk,intn)
{
intz=n;
intj=1;
inti,m;
if(k.downum<0)
i=function_2(k.downum,n);
else
i=k.downum%n;
if(k.upnum<0)
m=function_2(k.upnum,n);
else
m=k.upnum%n;
while((i*j)%n!
=1)j++;
return(m*j)%n;
}
intmain()
{
/*mixedk;
intn=11;
k.upnum=5;
k.downum=-3;
printf("%d",function_2(k.downum,n));
printf("%d",function_1(k,n));
*/
intn=11;
intP_x,P_y,Q_x,Q_y;
printf("������P���X���꣺");
scanf("%d",&P_x);
printf("������P���Y���꣺");
scanf("%d",&P_y);
printf("������Q���X���꣺");
scanf("%d",&Q_x);
printf("������Q���Y���꣺");
scanf("%d",&Q_y);
mixedk;
if(P_x==Q_x||P_y==Q_y)
{
k.upnum=3*P_x*P_x+1;
k.downum=2*P_y;
}
else
{
k.upnum=Q_y-P_y;
k.downum=Q_x-P_x;
}
intr=function_1(k,n);
intX,Y;
if((r*r-Q_x-P_x)<0)
X=function_2(r*r-Q_x-P_x,n);
else
X=(r*r-Q_x-P_x)%n;
if((r*(P_x-X)-Q_y)<0)
Y=function_2((r*(P_x-X)-P_y),n);
else
Y=(r*(P_x-X)-P_y)%n;
printf("%d%d\n",k.upnum,k.downum);
printf("%d%d\n",(r*r-Q_x-P_x),r*(P_x-X)-P_y);
printf("%d\n",r);
printf("���ܺ������Ϊ(%d,%d)",X,Y);
system("pause");
return0;
}