我希望在一个素数域上的椭圆曲线上进行点减法。我尝试将要减去的点表示为(x,-y log(p))
,但我的答案似乎不匹配。
这是我尝试进行减法的方式:
s9=point_addition(s6.a,s6.b,((s8.a)%211) ,-((s8.b)%211));
这里的 s9
、s6
和 s8
都是包含两个 int
的结构体。
这是我的点加函数:
structure point_addition(int x1, int y1, int x2, int y2)
{
int s,xL,yL;
if((x1-x2)!=0)
{
if ((((y1-y2)/(x1-x2)) % 211)>0)
s=(((y1-y2)/(x1-x2)) % 211);
else
s=(((y1-y2)/(x1-x2)) % 211) + 211;
if ((((s*s)-(x1+x2)) % 211)>0)
xL= (((s*s)-(x1+x2)) % 211) ;
else
xL= (((s*s)-(x1+x2)) % 211) + 211;
if(((-y1+s*(x1-x2)) % 211)>0)
yL= ((-y1+s*(x1-xL)) % 211);
else
yL= ((-y1+s*(x1-x2)) % 211) + 211;
}
else
{
xL= 198 ;
yL= 139;
}
s7.a= xL;
s7.b= yL;
return s7 ;
}
该程序似乎没有给我正确的坐标,请帮我修复这段椭圆曲线密码学代码。
s=(((y1-y2)/(x1-x2)) % 211)
不是正确的方法。 - President James K. Polk