Search for question
Question

In your favorite language (preferable in Python) create the following functions:

1. MRT => Use Miller-Rabin Primality Test to choose a prime number with s=512 bits and

check the primality test.

Project 3 on RSA:

2. EA => Use Euclidean Algorithm to evaluate gcd

3. EEA => Use Extended Euclidean Algorithm to find modular inverse of the value

4. powmod_sm => Square and multiply algorithm to evaluate exponentiation.

Now write the code for

I. RSA Key Generation (use above functions 1., 2., 3.) should be

II.

III.

a. Choose two primes p and q of s bits using MRT where p is not equal to q.

b. Calculate n = p * q, and (n) = (p − 1) * (q − 1)

c.

Chose randomly e from the set of {1,..., (n)-1} and check using EA if

gcd(e, (n)) = 1 if not chosen again until it fulfills the condition.

d. Calculate d = e¹ mod (n) using EEA. Note that d should be at least 0.3 * s

bits

e. Output k pub= (n, e) and k

Pr

(d)

Pub

RSA Encryption with input k (n, e) and random plaintext x and output should be

ciphertext y, evaluate exponentiation using the function powmod_sm

RSA Decryption with input kp = (d) and ciphertext y and output should be plaintext.x,

evaluate exponentiation using the function powmod_sm. Please make sure to check that

you get the same plaintext value before the encryption.

=

=

Please write your report and include a snapshot of output with you source code.

Fig: 1