首页 > 解决方案 > 如何对两个 4 位数字进行乘法运算,将它们视为 MATLAB 中的多项式

问题描述

我正在使用 MATLAB 模拟一个迷你 AES 加密/解密算法。为此,我需要将两个 4 位数字相乘,同时将它们视为多项式。它经历了一些阶段,即转换为多项式,将两个多项式相乘,如果需要,使用预定义的不可约多项式进行多项式归约以降低功率。然后转换回 4 位格式。

例如,乘以 1011⊗ 0111 类似于 x3+x+1 ⊗ x2+x+1 答案是 x5+x4+1 的幂为 5,那么您需要通过除以预定义的多项式 x4+x 来减少它+1。答案将是 x2,即 0100。

我知道 MATLAB 中有一些函数可以进行多项式乘法,但它们有点通用,需要一些特定的函数或方法来执行此操作。

提前谢谢了!

标签: matlabcryptographyaesgalois-field

解决方案


多项式乘法/除法与其系数的卷积/反卷积相同。然后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

推荐阅读