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.

Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.