1

How to find generators of a finite field Fp[x]/f(x) with f(x) is a irreducible polynomial over Fp.

Input: p (prime number), n (positive number), f (irreducible polynomial)
Output: g (generator)

I have p = 2, n =3, f = x^3 + x + 1
I am a newbie so I don't know where to start.
Do you have any solution? Plese help me step by step

justinNg
  • 21
  • 1
  • 5

1 Answers1

0

To find a generator (primitive element) α(x) of a field GF(p^n), start with α(x) = x + 0, then try higher values until a primitive element α(x) is found.

For smaller fields, a brute force test to verify that powers of α(x) will generate every non-zero number of a field can be done.

cnt = 0
m = 1
do
    cnt = cnt + 1
    m = (m*α)%f(x)
while (m != 1)
if cnt == (p^n-1) then α(x) is a generator for GF(p^n).

For a faster approach with larger fields, find all prime factors of p^n-1. Let q = any of those prime factors. If α(x) is a generator for GF(p^n), then while operating in GF(p^n):

α(x)^(p^n-1) % f(x)     == 1
α(x)^((p^n-1)/q) % f(x) != 1, for all q that are prime factors of p^n-1

In this case GF(2^3) is a 3 bit field and since 2^3-1 = 7, which is prime, then it's just two tests, shown in hex: x^3 + x + 1 = b (hex)

α(x)^7 % b == 1
α(x)^1 % b != 1
α(x) can be any of {2,3,4,5,6,7} = {x,x+1,x^2,...,x^2+x+1}

As another example, consider GF(2^4), f(x) = x^4 + x^3 + x^2 + x + 1 (hex 1f). The prime factors of 2^4-1 = 15 are 3 and 5, and 15/3 = 5 and 15/5 = 3. So the three tests are:

α(x)^f % 1f == 1
α(x)^5 % 1f != 1
α(x)^3 % 1f != 1
α(x) can be any of {3,5,6,7,9,a,b,e}

For larger fields, finding all prime factors of p^n-1 requires special algorithms and big number math. Wolfram alpha can handle up to around 2^128-1:

https://www.wolframalpha.com/input/?i=factor%282%5E64-1%29

This web page can factor large numbers and includes an explanation and source code:

https://www.alpertron.com.ar/ECM.HTM

To test for α(x)^(large number) = 1 or != 1, use exponentiation by repeated squaring while performing the math in GF(p^n).

https://en.wikipedia.org/wiki/Exponentiation_by_squaring

For large fields, where p^n is greater than 2^32 (4 billion), a primitive polynomial where α(x) = x is searched for, using the test mentioned above.

rcgldr
  • 27,407
  • 3
  • 36
  • 61
  • Very nice! Inspected the C-kernel of the alpertron library. With defined pre-procerssor switch FACTORIZATION_APP "test.c" forms a suitable command line interface. Argument is the decimal number to be decomposed and output is html-formatted info on factors and associated properties. – Sam Ginrich Mar 25 '21 at 22:42