Cryptography Reference
In-Depth Information
of a . Therefore, all elements of order d , being zeros of x d
1, are powers of a .By
Proposition 2.5, a power a t of a has order d if and only if gcd
(
,
) =
1 and hence
we have shown that if a has order d then the elements of order d are all the powers
a t with gcd
t
d
(
t
,
d
) =
1. Since there are
φ(
d
)
values of t such that 0
<
t
d and
gcd
(
t
,
d
) =
1, this means that if there is at least one element of order d , then there
are exactly
φ(
d
)
such elements. To complete the proof of the theorem it remains to
∈ F q of order d must exist. If we denote by f
show that an a
(
d
)
the number of
elements of order d we know that either f
(
d
) = φ(
d
)
or f
(
d
) =
0. But there are
F q
q
1 elements in
and all of them have order equal to some divisor of q
1,
so that d | q 1
f
(
d
) =
q
1. On the other hand, by Proposition 2.8 we also have
that d | q 1 φ(
d
) =
q
1. Thus f
(
d
)
is always equal to
φ(
d
)
and never 0, which
completes the proof.
F q of a finite field is cyclic and has
Corollary 2.5
The multiplicative group
φ(
q
1
)
generators.
We can now see that, for every prime p , there are primitive roots modulo p :
Z p is a cyclic group of order p
Corollary 2.6
If p is a prime number, then
1 which
has
φ(
p
1
)
generators.
Exercise 2.38 Show that if p is a prime number, then the only square roots of 1
modulo p are 1 and
1.
Z p (for p prime)
and its Maple implementation. That algorithm works in any finite cyclic group and
the corresponding Maple function can easily be adapted to find a generator of the
multiplicative group of a finite field. However, it is not necessary to do this because
Maple already has this function implemented in the package GF . Using as example
our previously defined 256-element field F256 , the Maple functions to test whether
a given field element is a generator and to pseudo-randomly choose a generator
are F256:-isPrimitiveElement and F256:-PrimitiveElement() ,
respectively.
We have seen in Sect. 2.7 an algorithm to compute a generator of
Example 2.27 Suppose we want to check whether the element corresponding to the
polynomial x is a generator. We compute:
> F256:-isPrimitiveElement(F256:-ConvertIn(x));
false
Thus this element is not a generator. Let's now check the element corresponding
to x
+
1:
> a := F256:-ConvertIn(x+1);
a:=(x + 1) mod 2
> F256:-isPrimitiveElement(a);
true
Search WWH ::




Custom Search