问题标签 [galois-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 回答
157 浏览

c - 这段代码对应的矩阵/向量运算是什么?

这是代码:

此代码在 GF(2) 上实现矩阵和向量的乘法。将结果作为 64x64 矩阵 M 和 1x64 向量 x 的乘积返回的代码。

我想知道这个代码是什么线性代数运算(在 GF(2) 上):

0 投票
1 回答
451 浏览

python - 带有对象的 Numpy 矩阵求逆

我正在使用 gf256 库进行 galois 场数学运算,并将它放在一个 numpy 矩阵中。尽管使用它调用np.linalg.inv()时,它会引发错误。

以上是总结,下面是详细内容:

毕竟,gfarr看起来像这样

np.linalg.inv(gfarr)抛出此错误

矩阵绝对是可逆的,GF256 类支持所有常用运算符。是否可以使用 numpy 进行这项工作?

0 投票
1 回答
754 浏览

python - 找到一个多项式的逆(倒数)模另一个具有有限域系数的多项式

如果我有一个多项式 P,有没有办法计算 P^-1 模 Q,作为 Q 另一个多项式?我知道这两个多项式的系数都属于以 z 为模的整数域,因为 z 是一个整数。

我不确定 SymPy 是否已经在其galoistools模块中具有此功能。

0 投票
1 回答
487 浏览

assembly - CLMUL 是常数时间吗?

无进位乘法指令是否在恒定时间内运行?换句话说,执行所需的时间是否与其参数无关?

0 投票
1 回答
225 浏览

verilog - 如何将乘法的值保持在有限域范围内?我正在实现 GF(8) 乘法

我正在实现 GF(8) 乘法。原始多项式是 x^3 + x + 1。我知道基础知识:如果乘法溢出,我可以用我的原始多项式对它进行异或运算,并将其带入有限域的范围内。

但是,当溢出发生多于一位时,就会出现问题。例如: 正确结果:二进制结果 12(1001) 中的 alpha^3(011) * alpha^2(100)。乘积溢出,因此与原始多项式进行 XOR 会给出正确的值,即 alpha^5(111)。 不正确的结果:二进制结果中的 alpha^5(111) * alpha^3(011) 21(10101)。这里结果溢出了两位,并且使用原始多项式进行 XOR 不会给出正确的结果。

我错过了什么?

0 投票
4 回答
416 浏览

python - 用随机二进制密钥解密二进制序列。我的脚本有什么问题?

(以下更新)

从Philip Klein的线性代数文本Coding the Matrix中尝试一个问题。针对所有可能的密钥强制使用密文二进制序列时遇到问题。问题 1.5.1,第 57 页:

一个 11 符号的消息已被加密如下。每个符号由 0 到 26 之间的数字表示(A 映射到 0,B 到 25,空格到 26。)每个数字由 5 位二进制序列表示(0 映射到 00000,26 到 11010)。最后,生成的 55 位序列使用有缺陷的一次性密码器版本进行加密:密钥不是 55 位,而是相同的 5 位随机位序列的 11 个副本。密文为: '10101'、'00100'、'10101'、'01011'、'11001'、'00011'、'01011'、'10101'、'00100'、'11001'、'11010'

目标是找出明文。我遇到的问题是:一,我的解码器函数产生了几个高于 int 26 的 5 位二进制文​​件。这个函数应该针对每个可能的 5 位二进制序列(密钥)尝试密文二进制序列,直到 int 26,产生每一个可能的明文序列。二,我应该使用伽罗瓦域来确保每个二进制序列保持二进制吗?(1 + 1 = 0 而不是 2)有什么建议吗?我正在尝试通过使用 Klein 的有趣文本来学习线性代数(并提高我有限的 Python 能力)。这是相当困难的......谢谢!

更新

感谢曹大方和jason,我将代码编辑如下,发现明文:eve is evil

  1. 解码器功能范围增加到 32
  2. (我仍然需要围绕 GF(2) 和 XOR,包括大方使用x ^ y & mask
  3. 使用解码器将返回的列表切成 11 项列表

chunks = [decoded[x:x+11] for x in range(0, len(decoded), 11)]

*因为密文由 11 个“符号”组成

  1. 将上面列表映射到大方使用的 lambda 函数:
0 投票
0 回答
192 浏览

c++ - 在 C++ 中对 GF(2^6) 执行矩阵运算(例如乘积和逆)

我想用 C++ 语言在伽罗瓦域 GF(64) 上实现一些矩阵运算,例如乘积和逆计算。我通常使用 Eigen 库以双精度类型执行此类操作。

在 Matlab 中,可以使用以下函数在 GF 上转换矩阵: A_gf = gf(A, 6); 在 A_gf 上定义的所有后续操作都在 GF(64) 中自动完成,例如 A 的逆:inv(A)。

你知道我是否可以在 C++ 中做类似的事情吗?

0 投票
1 回答
567 浏览

matlab - 如何将伽罗瓦场矩阵转换为二进制矩阵

我有一个编码器 BCH 的输出矩阵 (3,63),但这个矩阵是一个伽罗瓦域,我需要将这个伽罗瓦域转换为矩阵二进制,因为 matlab 将伽罗瓦域的元素视为字符串,我需要将此值视为二进制数。

我需要将代码列与 000,010 进行比较,... 使用 switch case 或 if 但代码矩阵的行采用 Galois 字段格式 我遇到的代码如下,matlab 错误是 SWITCH 表达式必须是标量或字符向量。

0 投票
1 回答
110 浏览

matlab - 如何对两个 4 位数字进行乘法运算,将它们视为 MATLAB 中的多项式

我正在使用 MATLAB 模拟一个迷你 AES 加密/解密算法。为此,我需要将两个 4 位数字相乘,同时将它们视为多项式。它经历了一些阶段,即转换为多项式,将两个多项式相乘,如果需要,使用预定义的不可约多项式进行多项式归约以降低功率。然后转换回 4 位格式。

例如,乘以 1011⊗ 0111 类似于 x3+x+1 ⊗ x2+x+1 答案是 x5+x4+1 的幂为 5,那么您需要通过除以预定义的多项式 x4+x 来减少它+1。答案将是 x2,即 0100。

我知道 MATLAB 中有一些函数可以进行多项式乘法,但它们有点通用,需要一些特定的函数或方法来执行此操作。

提前谢谢了!

0 投票
2 回答
212 浏览

c++ - 如何对两个 4 位数字进行乘法运算,将它们视为 C++ 中的多项式

我正在使用 C++ 模拟一个迷你 AES 加密/解密算法。

为此,我需要在将two 4-bit numbers它们视为多项式的同时进行乘法。

它经过一些阶段将它们转换为多项式,将两个多项式相乘,然后根据需要使用预定义的不可约多项式进行多项式归约以降低功率,最后将它们转换回 4 位格式。

例如,乘法1011 ⊗ 0111类似于x3+x+1 ⊗ x2+x+1 答案是,如果x5+x4+1有 的幂,5则需要通过除以预定义的多项式来减少它x4+x+1。答案将x20100

提前谢谢了!