# RSA Implementation Using OpenSSL Project

INCS 741(Cryptography)
RSA -Assignment
1) Using the Openssl cryptographic library implement the RSA public key encryption
scheme.
2) Specifications
a. The program should first generate prime numbers p, and q. It should then calculate
values of n, e and private key d. The value of e should be chosen randomly.
b. It then prompts the user for an input message m. It should encrypt and decrypt m
using the RSA encryption keys you created in the first step. The program should
display the values of p and q, of the public key {n,e} used for encryption, the
ciphertext, the private key {n,d} used for decryption and the decrypted text.
Test
1) Use your code to derive an RSA encryption key pair using the values of p and q. The
program should choose values of p and q greater than 128 bits and less than 512 bits.
2) Choose random text message m and use your code to encrypt and decrypt the message with
your generated public key and private key and show the result with screenshots.
3) Is the decrypted message same as plaintext m, explain?
4) Modify your code to generate digital signatures. Generate a signature for message m= “I
owe you \$1000” and output the message and its digital signature to the screen. How would
the receiving party verify the message and its signature. Explain?
Note
1) Generate the hex value of the message before encryption.
2) Use the following link as a reference for this assignment.
http://www.cis.syr.edu/~wedu/seed/Labs_16.04/Crypto/Crypto_RSA/Crypto_RS
A.pdf
Submission
Submit the following documents separately in Blackboard by the deadline. NO ZIPPED
FILES ALLOWED
1) All your code files.
2) A detailed README file, which should explain how to run the code with sample
input and output. If you are unfamiliar with READMEs you can find an introduction here
https://www.youtube.com/watch?v=RZ5vduluea4. Note that the README file you
submit for this project need not be complex, it only needs to at least explain how
to compile the code and run the code with examples.
3) A MAKEFILE that automates the building/compiling of your code. If you are
unfamiliar with Makefiles you can get a quick introduction here