matlab - 如何对两个 4 位数字进行乘法运算,将它们视为 MATLAB 中的多项式
问题描述
我正在使用 MATLAB 模拟一个迷你 AES 加密/解密算法。为此,我需要将两个 4 位数字相乘,同时将它们视为多项式。它经历了一些阶段,即转换为多项式,将两个多项式相乘,如果需要,使用预定义的不可约多项式进行多项式归约以降低功率。然后转换回 4 位格式。
例如,乘以 1011⊗ 0111 类似于 x3+x+1 ⊗ x2+x+1 答案是 x5+x4+1 的幂为 5,那么您需要通过除以预定义的多项式 x4+x 来减少它+1。答案将是 x2,即 0100。
我知道 MATLAB 中有一些函数可以进行多项式乘法,但它们有点通用,需要一些特定的函数或方法来执行此操作。
提前谢谢了!
解决方案
多项式乘法/除法与其系数的卷积/反卷积相同。然后mod(...,2)
应用于结果。
我不太确定这两个步骤对 GF 是否正确。请尝试使用其他一些多项式,看看结果是否符合您的预期:
x = [1 0 1 1];
y = [0 1 1 1];
product = conv(x, y);
product = mod(product ,2);
divider = [1 0 0 1 1];
[~, remainder] = deconv(product, divider);
remainder = mod(remainder, 2);
这给
product =
0 1 1 0 0 0 1
remainder =
0 0 0 0 1 0 0
推荐阅读
- angular - 在 mat-select 或 mat-selection-list 中使用 mat-option AND mat-radio-button
- python - 如何从站点获取所有页面数据并保存?
- sql-server - SQL Server 和 Vb.net 中的关系问题
- vuetify.js - vuelidate 中的表单验证
- python - 使用可变长度参数并希望让用户给出灵活大小的实际参数
- python - /'str'对象的TypeError不是django模板中的映射
- react-native - 我想在 React Native 中实现类似的背景但不知道该怎么做?
- android - 如何在 gui 中启动 androidx86?
- cypress - 断言 Cypress 路由是否只调用一次
- python - 如何使用pyqt4将字典键数据项列表添加到QTableWidget中