Cryptography 椭圆曲线上的点数

Cryptography 椭圆曲线上的点数,cryptography,elliptic-curve,Cryptography,Elliptic Curve,如果椭圆曲线的形式为: y^2 = x^3 + a*x + b (mod p) 有没有好的程序来计算这条曲线上的点数 我读过Schoof和Schoof Elkies Atkin(SEA)算法,但我正在寻找开源实现。有人知道一个好的程序可以做到这一点吗 此外,如果a为1,b为0,则SEA算法不能使用,因为j不变量为0。这是正确的吗?你听说过吗 Sage包括Pari,这是一个数论的开源软件包。Pari实现了SEA 发件人: 我试过鼠尾草。我花了大约3-4个小时编译到x64 ubuntu。这似乎是

如果椭圆曲线的形式为:

y^2 = x^3 + a*x + b  (mod p)
有没有好的程序来计算这条曲线上的点数

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

此外,如果a为1,b为0,则SEA算法不能使用,因为j不变量为0。这是正确的吗?

你听说过吗

Sage包括Pari,这是一个数论的开源软件包。Pari实现了SEA

发件人:


我试过鼠尾草。我花了大约3-4个小时编译到x64 ubuntu。这似乎是一个好节目。但是当j-不变量为0时,SEA算法无法使用,如果对p/k使用较大的值,则似乎会出现一些问题

在进一步搜索之后,我还发现了miracl: 他们有普通Schoof和SEA算法的实现。但是这个程序在使用大的输入值时也有一些问题。运行3-4小时后,它崩溃了:/。我试图修复它,目前它正在重新运行,希望它能工作

编辑:现在可以了。上面链接中的程序与Rasmus Faber提供的程序相同。

这里有一些链接:
.

我也一直在为此目的使用Mike Scotts程序(miracl)。 出于好奇,我想问一下:你可以用这个软件生成多大的具有主要组顺序的域? 我得到了1024位,现在退出了,因为我需要我的office PC,而不是连续几周运行点数软件。 你有没有制作更大的域名?如果是这样,我很乐意获得域参数,如果您没有异议,我会将它们包括在我的ECC软件学术签名中

我的域名可以在这里找到。 可从此处访问使用它们的软件


问候。

我想你需要更具体一些。可用的点空间是多少?整数?雷亚尔?除非你以其他方式约束问题,否则会有无穷多个点。OP上说的是“mod p”,这意味着整数。上下文可能是椭圆曲线密码术,但我不确定,数学有点过头了。这是一个有趣的主题,我在我的一本旧数学书中找到了一些关于椭圆曲线模p的理论。如果您感兴趣,我可以提供一些信息(但没有解决方案)。我不确定我是否仍然理解完整的数学,但这是一个有趣的东西。这个问题的措辞对于这个领域的任何人来说都是绝对正确的。椭圆曲线E mod p点的数目是指p元素A^ 2(Fyp)(或投影平面P^ 2(Fyp)中的点的数量)在仿射平面上的点的数。“迈克·斯科特的任意椭圆曲线上的点计数算法的C++实现”完成了这项工作。我不得不做一些改变,这样它就可以处理大量的数据。也就是说:增加数组的大小和“大”数字的精度。在那个页面上,链接对我来说是死的,有人能镜像吗?
sage: k = GF(next_prime(10^20))
sage: E = EllipticCurve(k.random_element())
sage: E.cardinality()                   # less than a second
100000000005466254167