伽罗瓦域算法的实现 你知道C++中的算术实现吗?至少应该涵盖像GF(216)和GF(232)这样的情况。性能是一个问题,因此实现应该考虑优化其操作

伽罗瓦域算法的实现 你知道C++中的算术实现吗?至少应该涵盖像GF(216)和GF(232)这样的情况。性能是一个问题,因此实现应该考虑优化其操作,c++,finite-field,galois-field,C++,Finite Field,Galois Field,我更喜欢一个普通的计算库或者一个单独用于此任务的小型库。如果没有这些,我也欢迎一些可读的源代码。有一个名为NTL的库:。虽然它的源代码不是很“可读”。我在维基百科上的文章中找到了Arash Partow的一个链接 乍一看,代码看起来几乎完全没有注释,但是以结构化的方式编写,因此可能可以理解。不过,性能似乎不是一个重要的设计标准:内联函数的使用相当有限,一般来说,理论数学的直接表示法被认为比明确计算快捷方式更重要。为了完整起见,我在这里列出了这些内容,这样您就可以看一看,形成自己的观点,并相应地进

我更喜欢一个普通的计算库或者一个单独用于此任务的小型库。如果没有这些,我也欢迎一些可读的源代码。

有一个名为NTL的库:。虽然它的源代码不是很“可读”。

我在维基百科上的文章中找到了Arash Partow的一个链接


乍一看,代码看起来几乎完全没有注释,但是以结构化的方式编写,因此可能可以理解。不过,性能似乎不是一个重要的设计标准:内联函数的使用相当有限,一般来说,理论数学的直接表示法被认为比明确计算快捷方式更重要。为了完整起见,我在这里列出了这些内容,这样您就可以看一看,形成自己的观点,并相应地进行投票或评论。

也许您可以使用中实现的代码(特别是,)。Cuffo++是一个实现许多密码方案的免费C++库。其中,GCM采用伽罗瓦域算法


根据,图书馆本身是受版权保护的,而个人源文件是公共领域。

寻找代数数字,我偶然发现了这一点。看看这个,我发现它也做GF(pk)运算。虽然很薄,但显示了相当多的代码和工作量。尚未深入了解详细信息,但我想我应该将其包括在我的列表中。

也许您可以使用中实现的代码。@user315052,请将该注释作为一个答案:确实包含一些GF2操作,它对SSE2的使用表明性能得到了考虑。评论很少。我希望在其他答案中包含这一点,这样我就可以使用投票来表示用户如何将这一点与其他建议进行比较。该模块应该为任意e实现GF(2^e)。然而,它似乎适用于任意阶多项式,因此它可能基于GMP,而不是16或32系数多项式的简单机器整数。如果是这样(仍然需要验证),那么这似乎是对资源的浪费,包括内存和cpu。我刚刚了解到,可以使用a(称为
PCLMULQDQ
和friends)来执行伽罗瓦场乘法,比其他方法效率要高得多。我还看到crypto++是支持该指令的库之一。