In this assignment you will design and implement your own


Assignment Brief:

1. In this assignment, you will design and implement your own implementation of RSA public key cryptography.

2. Java does, in fact, contain a library, "java.security", that implements RSA and several other encryption systems. Along with this assignment, you will be provided with a ZIP archive that contains a working program (by Bob Piper) for you to import into the IDE. This program uses the built-in Java security library to implement RSA encryption, but please note that it is provided as an example only; this is a Java programming module and, as such, you must demonstrate your knowledge and skills in writing Java programs, implementing Java algorithms, etc. Therefore, in this assignment, you must not use Java's built-in security library, but must, instead, write your own implementation of RSA. By all means use the example program as a guide for how you might go about writing your own code, but do not use any of Java's built-in security functionality. As an example, if you look at the provided program, you will notice various data types and methods being used that generate and store public and private keys. You must not use these!

3. In the assignment lecture, an overview has been given of Java primitives (BigInteger class and methods) which can be used to implement RSA public key cryptography. In addition, algorithms have also been described that can replace the Java primitives. Additional credit will be given to students who demonstrate that they can implement their solution using primitives and some or all of the described underlying algorithms.

4. Your key generation method(s) should save the public and private keys to files on disk (as in the provided example program), so that these may be used at a later time to perform encryption/decryption without having to recreate them. As part of your work, you should attempt to produce a program that encrypts simple data, using the public key. This program should print the original data and its encrypted version to the screen and save the encrypted data to a file on disk. You should also attempt to produce another program that reads the encrypted data file and private key from disk and decrypts the data using this private key. This program should print both the encrypted data and its decrypted version to the screen and save the decrypted version of the data to a file on disk. A graphical user interface will be deemed a desirable, but not essential, feature of your program - additional credit will be given to students who can design, implement and test an appropriate graphical user interface.

5. You are expected to produce a concise requirements specification for your RSA cryptography system based on the previous paragraphs. Use sound requirements elicitation and modelling techniques to identify, analyse and record the necessary functional and non-functional requirements. You may use any or all of use cases, activity diagrams, class-based modelling, CRCs, control flow, data flow and/or behavioural models) as you deem appropriate to render the requirements explicit. Justify chosen requirements and modelling choices with appropriate concise rationale

6. Using your requirements specification, create a design that satisfies the requirements. You will find it helpful to stepwise refine the diagrams and models produced in the requirements specification into a design-level representation of the classes, methods and other components required for later implementation (this may include UML diagrams, flowcharts, decision tables pseudocode, etc.)

7. Using your created design, implement it as executable source code using appropriate modern object-oriented and procedural programming techniques for classes, methods and other components. Your code should also, as far as possible, be self-documenting through the choice of sensible names for your classes, methods and variables. You should use JavaDoc comments throughout your code as well as standard Java comments where you think it might be beneficial to give some explanation to your code

8. Design, develop and undertake a suitable set of tests to demonstrate that your implemented code satisfies the requirements specification and functions as expected. You should supplement these with supporting explanation

9. You should submit a requirements specification, a set of design documents including supporting rationale, the final source code, your test set and test results (including screenshots of correctly and incorrectly functioning code and features). Your supporting text elements may form a report of up to 3,000 words

10. Ensure that your work (submitted electronically via the online submission portal) is bundled into a suitable file (a zipped collection of documents) with the filename matching the pattern sXXXXXX-SDPAssign where sXXXXXX is your UCS userid. Ensure that all documents are marked with your UCS userid. Your name should not appear anywhere in any of the files.

Request for Solution File

Ask an Expert for Answer!!
JAVA Programming: In this assignment you will design and implement your own
Reference No:- TGS02269109

Expected delivery within 24 Hours