Search code examples
matlabcryptographyaesgalois-field

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


I am simulating a mini AES encryption/decryption algorithm using MATLAB. For this I need to multiply two 4-bit numbers while treating them as polynomials. It goes though some stages, that are, converting to polynomials, multiply the two polynomials, polynomial reduction to lower power if needed using a predefined irreducible polynomial. Then converting back to 4-bit format.

For instance, multiplying 1011⊗ 0111 is analogous to x3+x+1 ⊗ x2+x+1 The ans is x5+x4+1 has of a power of 5 then you need to reduce it by dividing on the predefined polynomial x4+x+1. The answer will be x2 that is 0100.

I know that there are some functions in MATLAB doing polynomial multiplications but they are kind of general and need some specific function or method to do this.

Many thanks in advance!


Solution

  • Polynomial multiplication/division is the same as convolution/deconvolution of their coefficients. Then mod(...,2) is applied to the results.

    I'm not quite sure that this two-step process is correct for GF; please try with some other polynomials have to see if the results are what you expect:

    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);
    

    This gives

    product =
         0     1     1     0     0     0     1
    remainder =
         0     0     0     0     1     0     0