问题标签 [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.
pari - 在 pari-gp 中,如何找到有限域的原始元素?
q^n
说,我想要一个包含一些元素的有限域prime q
和positive n
。如何得到它的原始元素?
pari - 在 pari-gp 中,有什么东西可以将有限域映射到它的某个扩展吗?
比如说,我有一个超过 GF(2) 的多项式 p(x) 和一个超过 GF(4) 的多项式 g(x)。例如,
在这种情况下,pari-gp 是否提供任何东西来进行?如果不是,我该如何进行所需的嵌入?
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)必须是不可约的
谁能帮我解释为什么我会收到这个错误?我对领域、组和类似的抽象概念知之甚少。
c++ - 如何用 Z_2 中的系数求解稀疏线性系统?
我想使用 Eigen 求解系数在 Z_2 中的大型稀疏线性方程组。首先,我们尝试了 Boolean 类型,它不起作用,因为在 Boolean 中 1+1=1,但我希望 1+1=0。因此,解决方案可能是一种新的定制标量类型。但它究竟是如何工作的呢?也欢迎其他软件包或软件的一些建议。
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。这既不优雅也不高效,我很确定,有更好的解决方案吗?
用于测试:这两个日志表都是数组:
python - 使用 Python 3 在 gf(2^8) 中计算乘法逆的纯 Python 方法
我将如何在 Python 3 的 GF2^8 中实现乘法逆?我当前的功能如下所示:
python - 有限域:计算矩阵的逆
我正在使用 Python 中的有限域。我有一个包含多项式的矩阵,每个多项式都表示为一个整数。例如,多项式x^3 + x + 1
表示为 11,因为:
给定一个矩阵,例如:
如何在 Python 中计算矩阵的逆?我已经实现了以下函数(对于多项式,而不是多项式矩阵):add()
, sub()
, mul()
, div()
,inv()
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
为什么会这样?更重要的是,有没有办法解决这个问题以实现我的目标?
python - 在有限域上插值多项式
我想在有限域的点上使用 python 插值多项式,并得到一个具有该域系数的多项式。目前我正在尝试使用 SymPy 并专门插值(从sympy.polys.polyfuncs
),但我不知道如何强制插值发生在特定的 gf 中。如果没有,这可以用另一个模块来完成吗?
编辑:我对 Python 实现/库感兴趣。
python - Python - 查找循环组生成器顺序的算法
我想找到g
从循环组中选择的生成器的顺序,G = Z*q
其中 q 是一个非常大(数百位长)的数字。我已经尝试了 Rosetta Code 中的以下代码,但它花费的时间太长: