简而言之,我试图在有限域Fp上的椭圆曲线上添加两个点y ^ 2 = x ^ 3 + ax + b.我已经在R上有一个有效的实现,但是不知道如何改变我发现的通用公式,以便它们能够在Fp上维持加法.
当P不等于Q时,Z是P和Q的总和:
dydx = (Q.y - P.y)/(Q.x - P.x)
Z.x = dydx**2 - P.x - Q.x
Z.y = dydx * (Z.x - P.x) + P.y
Run Code Online (Sandbox Code Playgroud)
当P等于Q时,再次用Z作为总和:
dydx = (3 * (P.x)**2 + self.a)/(2 * P.y)
Z.x = dydx**2 - 2 * P.x
Z.y = dydx * (Z.x - P.x) + P.y
Run Code Online (Sandbox Code Playgroud)
这些都是一样的formules为找到这里.需要修改什么?
澄清:上面的代码适用于R上的椭圆曲线.我希望找到需要更改的内容,以便在p阶有限域上添加点.