1 | initial version |
I'll call K
the field GF(2^8)
, a
its generator, and x
a generic element of K
.
sage: K.<a> = GF(2^8,'a')
Isn't there a problem with your first equation?
(1) f((a+x)^(2^8-1)) = a + x
This is saying (changing x to x + a) that
for every x
in K
, f(x^(2^8-1))
equals x
.
Since for any nonzero x
in K
, x^(2^8-1)
equals 1
,
sage: all((x == 0 or x^(2^8-1) == 1) for x in K)
True
this is saying that f(0)
equals 0
and that
for every nonzero x
in K
, f(1)
equals x
.
No well-defined function from K
to K
can satisfy that!
2 | Edit after an edit in the question (exponent changed from 2^8-1 to 2^8). |
I'll call K
the field GF(2^8)
, a
its generator, and x
a generic element of K
.
sage: K.<a> = GF(2^8,'a')
Isn't there a problem with your first equation?
(1) f((a+x)^(2^8-1)) = a + x
This is saying (changing x to x + a) that
for every x
in K
, f(x^(2^8-1))
equals x
.
Since for any nonzero x
in K
, x^(2^8-1)
equals 1
,
sage: all((x == 0 or x^(2^8-1) == 1) for x in K)
True
this is saying that f(0)
equals 0
and that
for every nonzero x
in K
, f(1)
equals x
.
No well-defined function from K
to K
can satisfy that!
EDIT:
The new form of your first equation (with exponent (2^8)
instead of (2^8-1)
):
(1) f((a+x)^(2^8)) = a + x
is saying that for every x
in K
, you have f(x) = x
. Indeed,
sage: all(x^(2^8) == x for x in K)
True
Equation (3) is void, since, given that f(x)
is in K
, of characteristic 2
, obviously f(x) + f(x)
equals 0
for any x
in K
.
Equation (2) is saying that for any x
in K
, f(x^(2^6))
equals (x+a)^(2^6) + a^(2^6)
. This is saying that f
is the identity when restricted to (2^6)
-th powers:
sage: all(x^(2^6) == (x+a)^(2^6) + a^(2^6) for x in K)
True
so it is a priori weaker than equation (1), except that the map sending x
to x^(2^6)
is in fact a bijection from K
to K
:
sage: len(set(x^(2^6) for x in K)) == len(K)
True
so equation (2) is also saying that f
is the identity map on K
.
In the end, for the purpose of your exercise, using Sage for small computations in K
was enough, and manipulating an undefined function from K
to K
was not needed.