【发布时间】:2013-03-16 11:02:42
【问题描述】:
我想在素数场上的椭圆曲线上做点减法。我尝试将要减去的分数设为(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 ;
}
程序似乎没有给我正确的坐标请帮助我编写椭圆曲线密码学的编码。
【问题讨论】:
-
不要忘记标记您在 Jowin 中执行计算的语言,如果只是为了增加查看次数。我猜到了 C,但你可以重新编辑你的问题来改变它。
-
Jowin, "division" mod p 意味着你必须计算一个modular inverse。
s=(((y1-y2)/(x1-x2)) % 211)不是正确的做法。 -
GregS,我知道我必须编辑我的代码才能使用模块化逆方法进行除法.. 但我想知道即使是正常除法我得到的任何点都在椭圆曲线上!.. 非常感谢为您解答!在我的程序中,必须为椭圆考虑一个无穷大点,我可以为此取什么点?
标签: c cryptography elliptic-curve