Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
你知道C++中伽罗瓦域算术的实现吗?至少应该涵盖像 GF(2 16 ) 和 GF(2 32 ) 这样的情况。性能是一个问题,因此实施应该考虑优化其操作。
我更喜欢一个通用的计算库或一个专门用于此任务的小型库。缺少这些,我也欢迎一些可读的源代码。
我在关于有限域算术的维基百科文章中找到了 Arash Partow的伽罗瓦域算术库的链接。
乍一看,代码看起来几乎完全没有注释,但以结构化的方式编写,因此可以理解。不过,性能似乎并不是一个重要的设计标准:内联函数的使用相当有限,而且一般来说,理论数学的直接符号似乎被认为比使用计算捷径更重要。为了完整起见,我在此处列出此内容,以便您可以查看,形成自己的意见,并可以相应地投票或发表评论。
也许您可以使用在crypto++中实现GCM 模式的代码(特别是gcm.cpp)。Crypto++ 是一个免费的 C++ 库,实现了许多加密方案。其中包括使用伽罗瓦域算法的 GCM。
根据许可,图书馆本身是受版权保护的,而单个源文件是公共领域的。
有一个名为 NTL 的库: http: //www.shoup.net/ntl/。虽然它的源代码不是很“可读”。
寻找代数数时,我偶然发现了这个建议Givaro的答案。看着它,我发现它也做 GF( pk )算术。文档很薄,但来源显示了 相当多的代码和努力。还没有深入研究细节,但我想我会把它包括在我的列表中。