如果您有以下形式的椭圆曲线:
y ^ 2 = x ^ 3 + a * x + b(mod p)
是否有一个很好的程序来计算这条曲线上的点数?
我已经阅读了Schoof和Schoof-Elkies-Atkin(SEA)算法,但我正在寻找开源实现。有没有人知道一个可以做到这一点的好程序?
此外,如果a为1且b为0,则无法使用SEA算法,因为j不变量为0.这是正确的吗?
编辑:这是在椭圆曲线加密的背景下
答案 0 :(得分:1)
您听说过Sage吗?
Sage包含Pari,它是数论的开源软件包。 Pari实施了SEA。
sage: k = GF(next_prime(10^20))
sage: E = EllipticCurve(k.random_element())
sage: E.cardinality() # less than a second
100000000005466254167
答案 1 :(得分:1)
我试过Sage。我花了大约3-4个小时来编译到x64 ubuntu。这似乎是一个很好的计划。但是当j-invariant为0时,不能使用SEA算法,如果你使用较大的p / k值,它似乎会有一些问题。
在搜索了一些之后我也找到了miracl:http://www.shamus.ie/index.php?page=elliptic-curves 他们实现了正常的Schoof和SEA算法。但是当使用大输入值时,该程序也存在一些问题。运行3-4个小时后,它崩溃了:/。我试图修复它,目前它正在再次运行,所以希望它可以工作。
编辑:它现在有效。上面链接中的程序与Rasmus Faber给出的程序相同。
答案 2 :(得分:1)
答案 3 :(得分:1)
我也一直在使用Mike Scotts程序(miracl)。 我只是好奇可能会问:您可以使用该软件生成具有黄金组订单的域名有多大? 我得到了1024位,现在已经退出了,因为除了运行点计数软件之外,我还需要办公室电脑。 你有更大的域名吗?如果是这样,我很乐意获得域名参数,如果您没有异议,请将它们包含在我的ECC软件学术签名中。
我的域名可以在ECC Domain Page找到。 可以从此处Manual with Link to download page
访问与其一起使用的软件此致 迈克尔安德斯