gpt4 book ai didi

c - 椭圆曲线密码学中的点减法

转载 作者:行者123 更新时间:2023-12-02 00:10:52 24 4
gpt4 key购买 nike

我想在质数域上的椭圆曲线上做点减法。我尝试将要减去的点作为 (x,-y log(p)) 但我的答案似乎不匹配。

这就是我尝试做减法的方式:

 s9=point_addition(s6.a,s6.b,((s8.a)%211) ,-((s8.b)%211));

这里的s9s6s8都是带有两个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 ;
}

程序似乎没有给我正确的坐标请帮助我编写椭圆曲线密码学的代码。

最佳答案

请参阅 GregS 关于 division mod p 的评论。您需要找到分母的倒数,然后相乘。要计算模逆,您可以使用扩展欧几里得算法。

此外,您对 y 坐标取反然后再添加 211 的方式有点奇怪。作为参数传递时,最好将字段元素保持在适当的范围内,例如要获得 -y mod p,请使用 p-y。

而且我认为这只是一个学习练习,因为您使用的是一个非常小的字段:)

关于c - 椭圆曲线密码学中的点减法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15448471/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com