问题标签 [finite-field]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
782 浏览

pari - 在 pari-gp 中,如何找到有限域的原始元素?

q^n说,我想要一个包含一些元素的有限域prime qpositive n。如何得到它的原始元素

0 投票
1 回答
180 浏览

pari - 在 pari-gp 中,有什么东西可以将有限域映射到它的某个扩展吗?

比如说,我有一个超过 GF(2) 的多项式 p(x) 和一个超过 GF(4) 的多项式 g(x)。例如,

在这种情况下,pari-gp 是否提供任何东西来进行?如果不是,我该如何进行所需的嵌入?

0 投票
0 回答
798 浏览

aes - AES 和 GNU Octave 中的不可约多项式

在第 2.1.2 节的Rijndael AES 提案中,他们选择了 m(x) = x^8 + x^4 + x^3 + x + 1 并说它是一个不可约多项式。该多项式对应于整数 283。

在第 4.2.3 节中,他们定义了 M 的值,即在MixColumn操作中使用的矩阵。我试图在八度音阶中找到它的乘法逆 M⁻¹。我使用了命令

八度给了我以下错误:

错误::gf伽罗瓦域的原始多项式(283)必须是不可约的

谁能帮我解释为什么我会收到这个错误?我对领域、组和类似的抽象概念知之甚少。

0 投票
1 回答
161 浏览

c++ - 如何用 Z_2 中的系数求解稀疏线性系统?

我想使用 Eigen 求解系数在 Z_2 中的大型稀疏线性方程组。首先,我们尝试了 Boolean 类型,它不起作用,因为在 Boolean 中 1+1=1,但我希望 1+1=0。因此,解决方案可能是一种新的定制标量类型。但它究竟是如何工作的呢?也欢迎其他软件包或软件的一些建议。

0 投票
0 回答
738 浏览

python - 高效的有限域乘法与 numpy 中的对数对数表查找

我正在尝试在 GF(2^8) 中实现有效的乘法,这些元素最自然地以 numpy-thonic 方式表示为 uint8-numpy-values。因此,我实现了 GF-Arithmetics(在纯 Python 中,而不是 numpy 中)以构建 log-antilog-tables(我使用了一个随机生成器,9);特别是,我实现了一个(非numpy)Python-Function multGF,它实现了GF-Multiplication,效果很好但速度很慢(因为它使用多项式模计算)。加速乘法的一个常见技巧是使用以下等式:

在此处输入图像描述

构建 log-antilog- uint8-ndarrays 很容易执行如下:

但是,这是我的问题,如何以 numpy-thonic 的方式实现乘法?对数表和对数表的大小都是 255(不是 256;0 没有对数),指数必须以 255 为模,而不是 256 为模。我想出了以下恕我直言的非 numpy-thonic 解决方案:

为了执行 mod-255-addition,我必须将 uint8-addition(自然地工作 mod-256)转换为 int-addtion。这既不优雅也不高效,我很确定,有更好的解决方案吗?

用于测试:这两个日志表都是数组:

0 投票
2 回答
6553 浏览

python - 使用 Python 3 在 gf(2^8) 中计算乘法逆的纯 Python 方法

我将如何在 Python 3 的 GF2^8 中实现乘法逆?我当前的功能如下所示:

0 投票
2 回答
2453 浏览

python - 有限域:计算矩阵的逆

我正在使用 Python 中的有限域。我有一个包含多项式的矩阵,每个多项式都表示为一个整数。例如,多项式x^3 + x + 1表示为 11,因为:

给定一个矩阵,例如:

如何在 Python 中计算矩阵的逆?我已经实现了以下函数(对于多项式,而不是多项式矩阵):add(), sub(), mul(), div(),inv()

0 投票
1 回答
68 浏览

search - GP/PARI 中的 setsearch:测试三次残差

我正在尝试在 GP/PARI 中编写一个程序,它给定一个有限域(在本例中,我将使用 p=3 上 9 个元素的度 2 域),计算所有元素的立方并将其存储在一个列表中(我知道这是非常低效的)。然后,我想在同一个字段的点上评估一些函数并测试它是否在这个列表中(是否是三次残差)。我正在尝试使用 GP/PARI 中的列表来完成此操作,然后在其上使用 setsearch。

我首先定义我的不可约多项式模 3。然后我遍历我的 9 个元素字段中的所有元素,将它们立方化并将其存储在一个列表中,该列表被实现为这个多项式环的商(双模)。一旦我有了这个列表,我现在就遇到了 setsearch 的麻烦。首先,该列表似乎以双模组的形式存储它。视觉上非常难看,但我不介意只要它可以进行计算。但是,似乎不能。例如,0 应该在列表中,但使用 setsearch 对其进行测试会返回 false。我猜原因是在列表中,0 存储为Mod(Mod(0,3),rpoly)

事实上,(见下文)似乎确实如此。然而,更糟糕的事情正在发生。>

因此,它似乎不仅拒绝承认 0 在列表中,而且甚至在穿过该字段时自然会遇到的其他形式的 0 也不起作用:它特别想要 %7

为什么会这样?更重要的是,有没有办法解决这个问题以实现我的目标?

0 投票
1 回答
3294 浏览

python - 在有限域上插值多项式

我想在有限域的点上使用 python 插值多项式,并得到一个具有该域系数的多项式。目前我正在尝试使用 SymPy 并专门插值(从sympy.polys.polyfuncs),但我不知道如何强制插值发生在特定的 gf 中。如果没有,这可以用另一个模块来完成吗?

编辑:我对 Python 实现/库感兴趣。

0 投票
0 回答
783 浏览

python - Python - 查找循环组生成器顺序的算法

我想找到g从循环组中选择的生成器的顺序,G = Z*q其中 q 是一个非常大(数百位长)的数字。我已经尝试了 Rosetta Code 中的以下代码,但它花费的时间太长: