gpt4 book ai didi

go - 如何用 Golang big.Int 计算 `x^3 + ax + b mod p`

转载 作者:IT王子 更新时间:2023-10-29 02:08:01 24 4
gpt4 key购买 nike

我试图找到椭圆点的 Y 坐标。我知道公式是 y^2≡x^3+ax+b mod p

但是我不确定我将如何在 Go 中实际对此进行编程。

xCubed.Exp(X, 3, nil)
AX.Mul(A,X)

N.Add(XPow3, AX) // x^3 + ax
N.Mod(N, P) // mod p
N.Add(N, B) // (x^3 + ax) + b
N.Mod(N, P) // mod p

return N

其中 xCubed,X,N,P,B 是 *big.Int 并且 N 代表 y^2

我是模运算的新手,所以我的假设 mod P 应用于每个操作;这是计算 x^3 + ax + b mod p 的正确方法吗?

编辑:我应该添加 AX.Mod(p) 吗?

最佳答案

我通过搜索 elliptic lib 中的一些代码弄明白了

func GetY(x *big.Int, curve *elliptic.CurveParams) *big.Int {


x3 := new(big.Int).Mul(x, x)
x3.Mul(x3, x)

threeX := new(big.Int).Lsh(x, 1)
threeX.Add(threeX, x)

x3.Sub(x3, threeX)
x3.Add(x3, curve.B)
x3.Mod(x3, curve.P)

return x3.ModSqrt(x3, curve.P)
}

关于go - 如何用 Golang big.Int 计算 `x^3 + ax + b mod p`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54055272/

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