我正在致力于在 FPGA 上实现 Galios Field Multiplier。我想实现可以乘以 163、253、288、409 和 571 次的乘数。我找到了一个实现乘数的算法,但为了测试,我需要给定次数的不可约多项式。
问题是如何找到给定次数的不可约多项式。还有什么方法可以生成预期结果来检查实现的逻辑是否正确。就像任何可用的在线加利奥斯场计算器一样。
我尝试在互联网上搜索计算器,但它们基于预定义的不可约多项式。
HP 有一份技术报告 低重量二进制表 不可约多项式。通常,在密码学中,低权重是更好的选择。
此外,您还可以查看 math.SE 中的 Finding irreducible polynomials over GF(2) with the lessest terms 来自行实现。
您可以使用 Maple、Mathematica 和 sageMath 检查结果。
下面的 SageMath 代码提供了给定次数的所有二进制不可约多项式。
degree=4
R = GF(2)['x']
for p in R.polynomials(degree):
if p.is_irreducible():
print(p)