cryptography - 如何为任何给定的二阶运算找到不可约多项式以将两个多项式相乘?
问题描述
我正在努力在 FPGA 上实现 Galios 场乘法器。我想实现可以乘以 163、253、288、409 和 571 的乘数。我找到了一种算法来实现乘数,但是为了测试,我需要给定度数的不可约多项式。
问题是如何找到给定次数的不可约多项式。还有什么方法可以生成预期的结果来检查实现的逻辑是否正确。就像任何可用的在线 galios 字段计算器一样。
我试图在互联网上搜索计算器,但它们是基于预定义的不可约多项式的。
解决方案
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)
推荐阅读
- java - ScrollView 不在线程中以编程方式滚动
- sql - 为什么我在另一列中使用“%text%”之类的数据查询列的结果的原因
- xamarin - Xamarin 错误 ios Simulator HE0046: 无法安装应用程序...无法安装请求的应用程序
- reactjs - 以谷歌搜索引擎优化获取时反应白页
- python - 在 pytest 中引发异常(失败:DID NOT RAISE
) - bash - bash 脚本导致意外标记附近出现语法错误
- python - Python:运行所有迭代,然后在循环内继续执行新任务
- c# - 从哪里以及如何解决 Blazor 中出现意外名称的问题
- node.js - 错误:UID SEARCH 由于后端错误而失败。| IMAP UID、Node.JS、imap.yandex.ru、imap.search
- android - 以编程方式创建 NavHostFragment 后获取 NavController