问题标签 [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.
matlab - 加速 gf(eye(x)) 也就是加速稀疏矩阵的伽罗瓦域创建
来自文档(通信工具箱)
x_gf = gf(x,m) 从矩阵 x 创建一个伽罗瓦域数组。伽罗瓦域有 2^m 个元素,其中 m 是 1 到 16 之间的整数。
美好的。大矩阵的工作量随着 x 的元素数量而增长。毫不奇怪,因为每个元素都必须在某个时候“触动”。
不幸的是,这意味着 gf(eye(n)) 的成本与 n 成二次方。有没有办法从那里的所有零中获利?
PS:我需要这个从 gf-Matrix 中删除一行,因为通常的 m(:c)= [] 方式不起作用,而且我将 gf-matrix 与切割统一矩阵相乘的想法出奇地慢..
sse - 使用 PCLMULQDQ 计算 CRC32 的常数
我正在阅读以下有关如何使用 Intel Westmere 和 AMD Bulldozer 中引入的 PCLMULQDQ 指令有效实现 CRC32 的论文:
五、戈帕尔等人。“使用 PCLMULQDQ 指令对通用多项式进行快速 CRC 计算。” 2009. http://www.intel.com/content/dam/www/public/us/en/documents/white-papers/fast-crc-computation-generic-polynomials-pclmulqdq-paper.pdf
我了解算法,但我不确定的一件事是如何计算常数 $k_i$。例如,它们为 IEEE 802.3 多项式提供常量值:
- k1 = x^(4*128+64) 模 P(x) = 0x8833794C
- k4 = x^128 模 P(x) = 0xE8A45605
- mu = x^64 格 P(x) = 0x104D101DF
等等。我可以只使用这些常数,因为我只需要支持一个多项式,但我很感兴趣:他们是如何计算这些数字的?我不能只使用典型的 bignum 实现(例如 Python 提供的那个),因为算术必须发生在 GF(2) 中。
matlab - 在有限域域中找到 Ax = b 中 x 的“所有解”
Matlab 提供了一种在 GF(2^m) 中找到 Ax=b 的特定解的方法。这是链接http://www.mathworks.in/help/comm/ref/gflineq.html但它只提供了一种解决方案。我怎样才能找到其余的解决方案?
例如:GF(4) 中的 A=[1 0 2 0 0 1],GF(4) 中的 b=[0]。x=A\b 给出 [0 0 0 0 0 0]' 作为解。我也知道 [0 1 2 3 2 3]' 是另一种解决方案。但除了全零之外,我无法得到任何其他解决方案。如何在 Matlab 中找到所有解决方案?
zxing - ZXing 库 Reed Solomon 示例
我想在本文ReedSolomonDecoder
第 10 页给出的示例中尝试 ZXing 库中的
基本上,它对消息进行编码
使用生成多项式
这导致
我想通过以下方式对此进行解码:
我不知道如何GenericGF
从给定的生成多项式创建对象。我知道它需要多项式的二进制整数表示,但要做到这一点,我需要多项式采用不可约形式,即所有系数都为 0 或 1。我怎样才能从这个给定的生成器中实现这一点多项式?
c - c语言中AES混合列块的伽罗瓦域乘法
我正在使用 c 开发 AES 加密程序,同时在混合列块中进行 galois 域乘法,
前任。[ https://crypto.stackexchange.com/questions/2402/how-to-solve-mixcolumns][1]
代码
假设为
- d4×02为d4<<1,与1b异或(因为d4的高位被置位),正确答案为b3;而使用此代码我得到 1b3
- bf×03 是 bf<<1 与 1b(因为设置了 bf 的高位)和 bf(因为我们乘以 3)异或,应该给 da;但使用代码结果是 1da
即使通过屏蔽 msb 解决了上述问题,但在以下代码中的 mixcolumn 中使用时,答案似乎是不正确的,它的一般矩阵运算仅在乘法被 galois 乘法和加法替换为 XOR 操作的情况下
你能找到任何可能导致错误的错误吗...
c - MIRACL 中 ECC over GF(2^m) 的无进位乘法优化
通过 CertiVox链接到 MIRACL 加密库
按照fastgf2m.txt中的说明,我已经能够编译所有内容。但是,执行后,基准 (bmark.exe) 程序在评估 GF(2^m) 上的曲线时停止,并出现错误,“这不是曲线上的点!”
我可以在没有优化的情况下让一切正常工作,但我不确定问题出在哪里。我没有修改任何曲线参数并遵循分布中的说明。我在 Intel i7-3520M 上编译 64 位 Windows 8.1。
如果有人对如何纠正此问题有任何建议,将不胜感激。
谢谢!!
arrays - C-shell:如何从单行标准输入创建多个数组?
我需要找到一种方法来使用 C-shell 完成以下任务(我不能使用不同的 shell):
有一个程序可以使用伽罗瓦域计算从较大的多项式中输出多项式因子。输出是一行,看起来像这样(不要注意数字的实际值;我随机选择它们,它们在数学上没有计算出来):
多项式数学的工作方式是,如果将一个因子提高到偶数,则该因子对于多项式的值是多余的。有点像乘以 1。我需要做的是提取多项式因子并消除多余的因子。
使用 sed,我已经能够将上述表达式更改为
但我不确定如何进行。
我想将上面的内容输入到 C-shell 脚本中,然后进行以下数组分配:
我认为最好的方法是首先将多项式因子分成单独的行,如下所示:
但我不确定如何做到这一点。
任何人都可以提供任何有用的帮助或提示吗?请注意,多项式因子的数量会发生变化,但我预计不会超过 8 个。指数值不重要;我只需要确定它们是偶数还是奇数。如果将它们分配给变量或数组,我可以轻松地做到这一点。单个因素的最大可能大小可能是括号内的大约 50 个个人数字。
java - Java或C数组中的乘法逆表GF(2 ^ 4)
我必须写一个表格查找GF (2 4 ) 中的乘法逆。我已经写出了乘法表,我不期待再这样做了。这是我作为示例编写的表格。我希望没有人再写这个了。我觉得很愚蠢。
GF (2 4 )上的乘法表
我不想再为倒数做那种事了!
有谁知道适合复制和粘贴的表(最好是 Java 或 C 16x16 数组)?我搜索了 github 试图找到一个已经写好的,但没有任何乐趣。
动机/理性
我不必严格地进行表格查找,但我不想添加一百行代码只是为了动态生成字段(这只是一个估计,但我怀疑我可以少做)。
algorithm - 伽罗瓦域中的快速矩阵求幂计算
我正在寻找一种快速计算 galois 域 2 ( GF(2) ) 中矩阵 A 的幂的方法。A
是一个双矩阵,它的幂x
表示为
简单的方法是转换A
为 GF(2) (因为给定的矩阵A
是双矩阵),然后执行幂运算。Matlab代码
但是,这种方式需要很长时间才能将矩阵转换A
为 GF(2)。我正在寻找一种没有 GF(2) 转换的快速方法。也就是我用mod操作
但是,问题在于第一种方式和第二种方式的结果并不相似。问题是数字溢出。一些成员建议我将矩阵转换A
为 int64。但是,我认为这不是处理我的问题的好方法。你能建议我在matlab中做一个快速的方法吗?提前致谢
这是一个简单的例子
第一种方式,
结果:
第二种方式
如何在A^x
不转换为以第一种方式具有相似结果的 GF(2) 的情况下快速计算?
c++ - 最终域库上的多项式
我试图找到一个 C++ 库来处理一些有限域 GF(2^n) 上的多项式,并支持矩阵表示,支持秩查找/逆,甚至解决 A=X*B。我正在尝试使用 Linbox,但文档很少。在对库的 Givaro 部分做了一些讨厌的事情后,我能够将整数转换为多项式表示,但我无法使用 Linbox 的排名/求解部分,因为它们似乎不处理多项式, 只有指数为 1 的素数基数 (GF(2))。
这是代码的一部分
调试时,该rank
函数始终将元素视为 GF(2) 上的元素并返回不正确的值。
关于如何使用这个库的任何想法?有一个 GF(2^n) 的 MxM 元素的矩阵并将其求逆或求其秩或求解线性方程组?或者我应该使用另一个库?