问题标签 [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.
avx512 - AVX-512 Galois-field 相关指令有什么用途?
AVX-512 指令集扩展之一是AVX-512 + GFNI,“Galois Field New Instructions”。
伽罗瓦理论是关于场扩展的。这与处理矢量化整数或浮点值有什么关系?指令应该执行“伽罗瓦域仿射变换”,它的逆,和“伽罗瓦域乘字节”。
那些是什么领域?这些说明实际上有什么作用,它有什么用?
cryptography - 如何在伽罗瓦域中进行多项式减法和除法
对于我的加密课程,我得到了两个多项式,紧凑形式和一个不可约多项式,并被要求在 GF(2^8) 中执行 4 个基本算术运算。完成了加法和乘法,我现在想知道如何处理减法和除法。为方便起见,假设输入按位顺序始终为 8 位
如何执行减法/除法?
algorithm - Reed-Solomon 错误算法是否仅在输入数据部分发生错误时才允许更正?
Reed-Solomon 算法正在向输入中添加额外的数据,因此可以将此类损坏输入上的潜在错误(特定大小/数量)纠正回原始状态。正确的?这个算法是否也保护了这些不是输入的一部分但被算法使用的附加数据?如果不是,如果错误发生在这样的非输入数据部分会发生什么?
algorithm - Reed-Solomon 纠错算法与 4 态条码的使用
我有一个至少需要35 位的组合数据信息。
使用4 状态条码,每个条形代表2 位,因此上述信息可以转换为 18 个条形。
我想为这个条形码添加一些强大的纠错功能,所以如果它被某种方式损坏,它可以被纠正。其中一种方法是Reed-Solomon 纠错。
我的目标是添加尽可能强的纠错功能,但另一方面我对条形码有大小限制。如果我正确理解了Reed-Solomon 算法, m∙k 必须至少是我的消息的大小,在我的例子中是 35。
基于Reed-Solomon Interactive Demo,我可以使用(m, n, t, k)为(4, 15, 3, 9),这将允许我对最多4∙9 = 36位的消息进行编码。这将导致码字大小为4∙15 = 60位或30 条,但纠错率t/n仅为20.0%。
下一个选项是使用(m, n, t, k)为(5, 31, 12, 7),这将允许我对最多5∙7 = 35位的消息进行编码。这将导致大小为5∙31 = 155位或78 个条的码字,纠错率t / n约为38.7%。
第一种情况需要使用 30 条的条形码,这很好,但 20.0% 的纠错率不如预期的那么好。第二种情况提供了 38.7% 的出色纠错率,但条码必须有 78 条,这太多了。
是否有其他方法或不同的方法可以提供很好的纠错和合理的条形码长度?
c++ - 模板参数数组
我正在尝试创建一个使用数组值作为值/类型模板参数的类。见下文
我相信我这样做的理由是理智的。此类为加法和乘法实现运算符重载。只有当类的实例使用相同的值和大小进行实例化时,这些操作才被明确定义arr
。
一个示例用例:
我目前的工作是传递arr
给构造函数调用并在组合任何不兼容的类型时抛出错误。我希望有更好的方法来做到这一点,谢谢!
编辑:此外,任何其他可能实现相同目标的设计模式都将受到欢迎。我不喜欢使用模板专业化,但它是我熟悉的工具!
c - 如此复杂的函数来测试变量是否不为零有什么好处?
我正在写关于为后量子安全签名编写的代码的硕士论文(计算机科学)。整个事情都可以在这里找到,但在这里并不重要。对于我的论文,我试图解释一个“简单”的功能,这根本不是那么简单。
该函数测试一个变量是否在伽罗瓦域GF(16)中不为零。(这里的GF(16)可以理解为4位无符号整数)。该函数如下所示:
我理解它是如何工作的,但我不明白为什么这个功能需要如此复杂。这有什么好的理由吗?很好的理由可能是性能或安全性(例如针对定时攻击的安全性)的好处。因为如果没有这样的好处,那么以简单的方式编写该函数不是更聪明,例如:
编辑
这段代码不是我写的,它是由加密研究人员编写的,他们试图让他们的 PQ 算法被 NIST 标准化。
TonyDelroy 在评论中建议了第二个代码片段的更简单方法。
python - GF(256) 中的快速稀疏矩阵点乘法与 Scipy.Sparse
我需要提高算法的速度。该方法将两个矩阵作为参数并执行点乘。唯一的问题是元素必须在 GF(256) 中作为八位字节相乘,然后作为异或相加。由于我正在处理非常大的稀疏矩阵,因此性能很糟糕。
如您所见,我尝试使用 lil 类,但性能仍然很差。
有什么有效的解决方法吗?
polynomials - GF(2^8) 中多项式的欧几里得算法
我正在尝试为 GF(2^8) 中的 2 个多项式创建欧几里得算法(以解决 Bezout 的关系)。
我目前有此代码用于我的不同操作
这是我的欧几里得算法:
我不明白我的算法循环的问题,这是我的测试剩余输出:
我知道我似乎在抛出一些代码只是希望得到答案,但我真的在寻找错误。
提前致谢 !
encryption - 关于AES不可约多项式的问题
对于伽罗瓦域 GF(2^8),多项式的格式为 a7x^7+a6x^6+...+a0。
对于 AES,不可约多项式是 x^8+x^4+x^3+x+1。
显然,GF(2^8) 的最大幂是 x^7,但为什么不可约多项式的最大幂是 x^8?
不可约多项式的最大幂将如何影响 GF 的逆结果?
我可以将不可约多项式的最大幂设置为 x^9 吗?
error-correction - 用于从循环磁带读取的短(7-10 位)窗口读取的纠错码
我有一个写在循环磁带上的 N 位数组。我从磁带上的一个随机位置开始读取一系列 M 个符号。我正在考虑 Reed Solomon 纠错尝试所有可能的消息起点,但至少所有 RS 实现都使用字节。这是一个实现问题还是 RS 需要在 Galois 领域具有一定的能力并且不能使用更小的尺寸?
我也尝试过使用 LDPC 和 Hamming 码,但它们会恢复所有消息,因此没有内置的健全性检查可用于检测消息的起点。