implementing basic routines for dealing

Aims: The project involves implementing basic routines for dealing with prime numbers and then building cryptographic applications using them.

Background: Modern cryptography allows us to perform different types of information exchange over insecure channels. One of these task is to agree on a secret key over a channel where messages can be overheard. This is achieved by Diffie-Hellman protocol. Other tasks include public key and digital signature schemes; RSA key exchange can be used for them. These protocols are of great importance for bank networks.

Most such algorithms are based upon number theory, namely, the intractability of certain problems involving prime numbers.

Early Deliverables

  1. Proof of concept program: An implementation of RSA using standard data types in Java or C++ encrypting and decrypting numbers.
  2. Proof of concept program: A simple program generating keys.
  3. Report: A description of the RSA encryption/decryption procedure.
  4. Report: Examples worked out on paper and checked using the proof of concept programme.

Final Deliverables

  1. The program must have a full object-oriented design, with a full implementation life cycle using modern software engineering principles.
  2. The program will use integers of arbitrary size and encrypt and decrypt test messages and files.
  3. An application with a GUI will perform a task such as a secure chat or a secure file transfer over the network.
  4. A combination of RSA and a symmetric encryption scheme will be implemented, where RSA will distribute the keys for the symmetric scheme.
  5. The report will contain an overview of modern cryptography.
  6. The report will describe RSA and number theory issues such as primality checking and factorisation.
  7. The report will describe the implementation issues (such as the choice of data structures, numerical methods etc) necessary to apply the theory.
  8. The report will describe the software engineering process involved in generating your software.
  9. The report will contain the data on the running time of the programs.

Suggested Extensions

  • An advanced symmetric encryption scheme such as DES or AES will be implemented.
  • Different primality testing and factorisation methods will be implemented. Their performance will be compared and test results reported.
  • Attacks on RSA and/or the symmetric scheme will be implemented and tested.


  • Taking CS3760, Information Security (or an equivalent 2nd year course) is recommended. Taking CS3580, Advanced Data Communications can be helpful.
  • Good command of Java or C++.