CSS_EXP 2_66
CSS_EXP 2_66
2
Name: Amisha Verma
Roll No. 66
Year: 2024-25 Batch- C
Subject : Cryptography and System Security
Objectives:
• To understand the concept of public key cryptosystem.
• To understand the RSA cryptosystem.
• To understand RSA Digital signature scheme.
• To understand the possible attacks on RSA cryptosystem.
Outcomes: The learner will be able to Apply the cryptosystem to ensure confidentiality and integrity of
information.
RSA was invented by Ron Rivest, Adi Shamir, and Len Adleman and hence, it is termed as RSA
cryptosystem. We will see two aspects of the RSA cryptosystem, firstly generation of key pair and
secondly encryption-decryption algorithms.
Example
An example of generating RSA Key pair is given below. (For ease of understanding, the primes
p & q taken here are small values. Practically, these values are very high).
● Let two primes be p = 7 and q = 13. Thus, modulus n = pq = 7 x 13 = 91.
● Select e = 5, which is a valid choice since there is no number that is common factor of 5 and
(p − 1)(q − 1) = 6 × 12 = 72, except for 1.
● The pair of numbers (n, e) = (91, 5) forms the public key and can be made available to
anyone whom we wish to be able to send us encrypted messages.
● Input p = 7, q = 13, and e = 5 to the Extended Euclidean Algorithm. The output will be d =
29.
● Check that the d calculated is correct by
computing − de = 29 × 5 = 145 = 1 mod 72
● Hence, public key is (91, 5) and private keys is (91, 29).
Source Code:
import java.util.*;
class Exp1
{
int q=sc.nextInt();
int n=p*q;
System.out.println("n="+n);
int e=0;
int pn=(p-1)*(q-1);
search:
{
for(int i=2;i<=pn;i++)
{
int r;
int j=i;
int k=pn;
while(k != j)
{
if(k > j)
k = k-j;
else
j = j-k;
}
if(k==1)
{
e=i;
break search;
}
}
}
System.out.println("e="+e);
go:{
for(int i=1;i<=pn;i++)
{
int x=(e*i)%pn;
if(x==1)
{
System.out.println("d="+i);
System.out.println("The private key is (d) "+i);
d=i;
break go;
}
}
}
System.out.println("The public key is (n,e) "+n+", "+e);
String t;
int c;
System.out.println("Enter plaintext");
t=sc.next();
int m = 0;
}
}
Output:
Conclusion:
RSA is a strong encryption algorithm. RSA implements a public-key cryptosystem
that allows secure communications and digital signatures, and its security rests
in part on the difficulty of factoring large numbers.