伽罗瓦场算术的实现

Implementation of Galois field arithmetic

本文关键字:实现 罗瓦场      更新时间:2023-10-16

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

我更喜欢一个通用的计算库或一个专门用于此任务的小型库。缺少这些,我也欢迎一些可读的源代码。

我在维基百科关于有限域算术的文章中找到了Arash Partow的伽罗瓦场算术库的链接。

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

也许您可以使用在crypto++中实现GCM模式的代码(特别是gcm.cpp)。Crypto++是一个免费的C++库,实现了许多加密方案。其中包括使用伽罗瓦场算术的GCM。

根据许可证,库本身受版权保护,而单个源文件是公共领域。

有一个名为 NTL: http://www.shoup.net/ntl/的库。尽管它的源代码不太"可读"。

寻找代数数,我偶然发现了这个建议 Givaro 的答案。看着这个,我发现它也可以做GF(pk)算术。文档很薄,但源代码显示了相当多的代码和努力。还没有深入研究细节,但我想我会把它包括在这里的列表中。