Using a software package with big integer arithmetic support (e.g. Maple, Sage, Python/NumPy,
C/GMP) develop a program to compute a discrete logarithm in Z?
p using Baby Step-Giant Step
Algorithm. You may use the large number arithmetic functions including modular exponentiation;
however you are (obviously) not allowed to use built-in discrete logarithm functions.
Find the discrete logarithm x = logαβ mod p for
(a) (40 bits) p = 2199023255867, α = 3, and β = 1228035139812.
(b) (60 bits) p = 2305843009213699919, α = 3 and β = 259893785866906004.
(c) Bonus: (80 bits) p = 2417851639229258349415043, α = 3, and β = 1007149824486452497234736.
Include your implementation in your answer. For each case indicate how much time was spent
to complete the attack. Also indicate the platform information (MHz speed, memory, chip type,
number of machines if you are running parallel threads etc.).