首页 > 解决方案 > 如何为任何给定的二阶运算找到不可约多项式以将两个多项式相乘?

问题描述

我正在努力在 FPGA 上实现 Galios 场乘法器。我想实现可以乘以 163、253、288、409 和 571 的乘数。我找到了一种算法来实现乘数,但是为了测试,我需要给定度数的不可约多项式。

问题是如何找到给定次数的不可约多项式。还有什么方法可以生成预期的结果来检查实现的逻辑是否正确。就像任何可用的在线 galios 字段计算器一样。

我试图在互联网上搜索计算器,但它们是基于预定义的不可约多项式的。

标签: cryptographyverilogcurve

解决方案


HP Table of Low-Weight Binary Irreducible Polynomias有一份技术报告。通常,在密码学中,低权重是更可取的。

此外,您可以查看这个在 GF(2) 上查找不可约多项式,使用math.SE 中最少的项来实现自己。

您可以使用 Maple、Mathematica 和 sageMath 来检查您的结果。

下面的 SageMath 代码提供了给定度数的所有二进制不可约多项式。

degree=4
R = GF(2)['x']
for p in R.polynomials(degree):
     if p.is_irreducible():
         print(p)

推荐阅读