Assignment 1
CS 300 Applied Symbolic Computation
Instructor: Jeremy Johnson
Due date: Friday May 5 at midnight
The purpose of this assignment is to learn how the RSA public key cryptosystem works and
to get comfortable with the underlying number theory and number theoretic algorithms along
with programming and using the Maple computer algebra system.
The assignment must be submitted as a Maple 10 worksheet, and computations and programming should be done with Maple.
You should read chapter 4 of the text and the paper by Rivest, Shamir and Adelman.
- Rivest, R. L., Shamir, A., and Adleman, L., A Method for Obtaining Digital Signatures and Public Key Cryptosystems, JACM, Vol. 21, No. 2, 1978, pp. 120-126.
- Exercise 4.2 from the text.
- Exercise 4.3 from the text - use Maple directly (i.e. (1/a) mod m) to find the inverses and then compute
them using the extended Euclidean algorithm (igcdex).
- Exercise 4.9 from the text.
- Exercise 4.11 from the text - use Maple's chrem command and then implement algorithm 4.5 to perform the computation.
Note that in algorithm 4.5 you do not have to implement INVERSE - you can simply use Maple to compute the
modular inverse.
- Implement algorithms 4.2 and 4.3 (do not hard code the key - i.e. implement so that you can specify the key).
Use your implementation to do exercise 4.4 from the text. Try your own message.
- Exercise 4.10 from the text. Use Maple's ifactor command to try to factor n and determine d given e. You should
write your code so that the size of the primes generated can be changed.