Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Multiplicative order of elements in a finite field defined by QuotientRing

I've defined the AES's $\operatorname{GF}(2^8)$ field as follows;

R.<x> = PolynomialRing(GF(2), 'x')
S.<y> = QuotientRing(R, R.ideal(x^8+x^4+x^3+x+1))
S.is_field()

When I added the below and run it

print("y+1 = ",(y+1).multiplicative_order())

I've got this error;

   2671         if not self.is_unit():
-> 2672             raise ArithmeticError("self (=%s) must be a unit to have a multiplicative order.")
  • How one can easily find the multiplicative order?

I've seen this question How to find the multiplicative order of an element in a quotient ring over finite field ? but that is too complex to build. Is there an easy method?

click to hide/show revision 2
retagged

Multiplicative order of elements in a finite field defined by QuotientRing

I've defined the AES's $\operatorname{GF}(2^8)$ field as follows;

R.<x> = PolynomialRing(GF(2), 'x')
S.<y> = QuotientRing(R, R.ideal(x^8+x^4+x^3+x+1))
S.is_field()

When I added the below and run it

print("y+1 = ",(y+1).multiplicative_order())

I've got this error;

   2671         if not self.is_unit():
-> 2672             raise ArithmeticError("self (=%s) must be a unit to have a multiplicative order.")
  • How one can easily find the multiplicative order?

I've seen this question How to find the multiplicative order of an element in a quotient ring over finite field ? but that is too complex to build. Is there an easy method?