0

我一直在使用 Sage 中的线性纠错码,目的是编写一个使用 Goppa 码的 McEliece 密码系统的演示。

我一直在遵循https://doc.sagemath.org/html/en/reference/coding/sage/coding/goppa_code.html上的 SAGE 教程中概述的格式

运行以下代码在字段 GF(2^4) 及其相应的解码器上创建 Goppa 代码没有问题。

F = GF(2^4)
R.<x> = F[]
g = x^2+x+1
L = [a for a in F.list if g(a) != 0]
C = codes.GoppaCode(g,L)
D = C.decoder()

但是,我正在尝试编程的低温系统需要比这更高的参数,特别是在 GF(2^10) 领域。因此,我用来创建此 Goppa 代码及其解码器的代码如下。

F = GF(2^10)
R.<x> = F[]
g = x^50+x^3+1
L = [a for a in F.list if g(a) != 0]
C = codes.GoppaCode(g,L)
D = C.decoder()

这会在 GF(2) 上创建一个 [1024, 524] Goppa 代码,并且生成代码 C 甚至使用它来编码消息向量(长度为 524)都没有问题。

不幸的是,当我运行最后一行来创建解码器 D 时,我似乎遇到了内存问题。我最初的反应是在具有更大内存(64GB)的机器上尝试它,但我没有运气。我认为这是因为我尝试创建的代码非常庞大,但如果有某种方法可以解决这个问题,让我实现这个 Goppa 代码并生成它的解码器,那将非常有帮助。

任何帮助将不胜感激,如果需要,我很乐意提供更多详细信息。

非常感谢!!

4

0 回答 0