如何在 MATLAB 中对两个 4 位数字进行乘法处理,将它们视为多项式

How to do multiplication for two 4-bit numbers treating them as polynomials in MATLAB

我正在使用 MATLAB 模拟一个迷你 AES encryption/decryption 算法。为此,我需要将两个 4 位数字相乘,同时将它们视为多项式。它经历了一些阶段,即转换为多项式,将两个多项式相乘,如果需要使用预定义的不可约多项式将多项式约简至较低的幂。然后转换回 4 位格式。

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

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

非常感谢!

多项式multiplication/division与它们的系数convolution/deconvolution相同。然后 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