如果您有以下形式的椭圆曲线:

y ^ 2 = x ^ 3 + a * x + b(mod p)

是否有一个很好的程序来计算这条曲线上的点数?

我已经阅读了Schoof和Schoof-Elkies-Atkin(SEA)算法,但我正在寻找开源实现。有没有人知道一个可以做到这一点的好程序?

如果a为1且b为0,则无法使用SEA算法,因为j不变量为0.这是正确的吗?

编辑:这是在椭圆曲线加密的背景下

有帮助吗?

解决方案

这里有一些链接: 实施部分P1363草案

其他提示

您是否听说过 Sage

Sage包含Pari,它是数论的开源软件包。 Pari实施了SEA。

来自 http:// wstein.org/papers/2008-bordeaux/sphinx/elliptic_curves.html#schoof-elkies-atkin-point-counting

sage: k = GF(next_prime(10^20))
sage: E = EllipticCurve(k.random_element())
sage: E.cardinality()                   # less than a second
100000000005466254167

我试过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给出的程序相同。

我也一直在使用Mike Scotts程序(miracl)。 我只是好奇可能会问:您可以使用该软件生成具有黄金组订单的域名有多大? 我得到了1024位,现在已经退出了,因为除了运行点计数软件之外,我还需要办公室电脑。 你有更大的域名吗?如果是这样,我很乐意获得域名参数,如果您没有异议,请将它们包含在我的ECC软件学术签名中。

我的域名可在此处找到 ECC域名页面 。 可以从这里访问使用它们的软件带链接到下载页面的手册

此致   迈克尔安德斯

scroll top