numtheory[mlog] - discrete logarithm
numtheory[index] - index
|
Calling Sequence
|
|
mlog(x, a, n)
mlog(x, a, n, 'c')
mlog(x, a, n, m)
mlog(x, a, n, 'c', m)
index(x, a, n)
index(x, a, n, 'c')
index(x, a, n, m)
index(x, a, n, 'c', m)
|
|
Parameters
|
|
x, a, n
|
-
|
integers
|
c
|
-
|
(optional) name of variable
|
m
|
-
|
(optional) equation of the form method=value
|
|
|
|
|
Description
|
|
•
|
The function mlog computes the discrete logarithm (also called the index) of x to the base a (mod n). It finds an integer y such that if possible, otherwise it returns FAIL.
|
•
|
When the optional argument c is provided, it is to be the fourth argument. If c is present in the calling sequence, the characteristic of the domain of the answer will be assigned to it. In this case all of the solutions to the logarithm are mlog(x, a, n) + k * c for any non-negative integer k.
|
•
|
When the optional argument m is provided, it must be the final argument in the calling sequence. This argument indicates the solution method that the user wishes to be employed. There are three possible choices for this parameter: method=shanks, which forces Shanks' Baby-Step Giant-Step algorithm to be employed in solving mlog(x, a, n); method=indcalc, which forces mlog(x, a, n) to employ the use of the Index Calculus method; or method=optimal, which automatically chooses the method based on the size of the problem. If no method is specified by the user, the default is method=optimal.
|
•
|
If x and n are coprime and a is a primitive root of n, then there is a unique solution of logarithm of x to the base a modulo phi(n).
|
|
|
Examples
|
|
>
|
|
>
|
|
| (1) |
>
|
|
| (2) |
>
|
|
| (3) |
>
|
|
| (4) |
>
|
|
| (5) |
>
|
|
| (6) |
>
|
|
| (7) |
>
|
|
| (8) |
>
|
|
| (9) |
>
|
|
| (10) |
>
|
|
mlog: "using Shanks method to compute log[a](x) mod p"
mlog: "where n=10007, a=25, and x=1441."
| |
| (11) |
>
|
|
mlog: "using the indexed calculus method to compute log[a](x) mod n"
mlog: "where n=10007, a=5, and x=1441."
mlog: "found new equation 1 out of 4"
mlog: "found new equation 2 out of 4"
mlog: "found new equation 3 out of 4"
mlog: "found new equation 4 out of 4"
| |
| (12) |
|
|