1
$\begingroup$

This question already has an answer here:

I want to calculate the S-box for AES. But I have a problem with the multiplicative inverse step. For example, the inverse of 95 is 8A.

I don't know how to get this result. How is the multiplicative inverse computed?

$\endgroup$

marked as duplicate by Ilmari Karonen, CodesInChaos Sep 21 '16 at 12:36

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

1
$\begingroup$

The inverse in AES is defined over a particular field. All the operation are done in this field. The Rijndael finite field is defined as follow: $GF(2^8) = GF(2)[x]/(x^8 + x^4 + x^3 + x + 1)$.

The "numbers" are a representation of polynomials (a byte represents coefficients of a polynomial):

0x95 = 1001 0101 = $x^7+x^4 + x^2 + 1$

0x8A = 1000 1010 = $x^7+ x^3 + x$

And the product of the two polynomial reduced modulo the irreductible polynomial is 1, as expected.

There are several way to implement the inversion and the affine transformation described in the AES to get the final SBox. Once you get the math, you may choose one way or the other, keep in mind that you can avoid to implement all the algebraic structure and a function taking as input only a byte (cfr: https://en.wikipedia.org/wiki/Rijndael_S-box#Alternate_equation_for_the_affine_transformation)

You may find more information here: https://en.wikipedia.org/wiki/Rijndael_S-box and https://en.wikipedia.org/wiki/Finite_field_arithmetic#Rijndael.27s_finite_field and Galois fields in cryptography

$\endgroup$

Not the answer you're looking for? Browse other questions tagged or ask your own question.