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.

  1. Exercise 4.2 from the text.
  2. 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).
  3. Exercise 4.9 from the text.
  4. 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.
  5. 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.
  6. 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.