0% found this document useful (0 votes)
3 views

RSA PROGRAM

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views

RSA PROGRAM

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 10

#include<stdio.

h>

#include<stdlib.h>

#include<math.h>

#include<string.h>

long int p, q, n, t, flag, e[100], d[100], temp[100], j, m[100], en[100], i;

char msg[100];

int prime(long int);

void ce();

long int cd(long int);

void encrypt();

void decrypt();

void main()

printf("\nENTER FIRST PRIME NUMBER\n");

scanf("%d", &p);

flag = prime(p);

if (flag == 0)

printf("\nWRONG INPUT\n");

exit(1);

printf("\nENTER ANOTHER PRIME NUMBER\n");

scanf("%d", &q);

flag = prime(q);

if (flag == 0 || p == q)
{

printf("\nWRONG INPUT\n");

exit(1);

printf("\nENTER MESSAGE\n");

fflush(stdin);

scanf("%s", msg);

for (i = 0; msg[i] != NULL; i++)

m[i] = msg[i];

n = p * q;

t = (p - 1) * (q - 1);

ce();

printf("\nPOSSIBLE VALUES OF e AND d ARE\n");

for (i = 0; i < j - 1; i++)

printf("\n%ld\t%ld", e[i], d[i]);


encrypt();

decrypt();

int prime(long int pr)

int i;

j = sqrt(pr);

for (i = 2; i <= j; i++)

if (pr % i == 0)

return 0;

return 1;

void ce()
{

int k;

k = 0;

for (i = 2; i < t; i++)

if (t % i == 0)

continue;

flag = prime(i);

if (flag == 1 && i != p && i != q)

e[k] = i;

flag = cd(e[k]);

if (flag > 0)

d[k] = flag;

k++;
}

if (k == 99)

break;

long int cd(long int x)

long int k = 1;

while (1)

k = k + t;

if (k % x == 0)

return (k / x);

}
}

void encrypt()

long int pt, ct, key = e[0], k, len;

i = 0;

len = strlen(msg);

while (i != len)

pt = m[i];

pt = pt - 96;

k = 1;

for (j = 0; j < key; j++)

k = k * pt;

k = k % n;

}
temp[i] = k;

ct = k + 96;

en[i] = ct;

i++;

en[i] = -1;

printf("\nTHE ENCRYPTED MESSAGE IS\n");

for (i = 0; en[i] != -1; i++)

printf("%c", en[i]);

void decrypt()

long int pt, ct, key = d[0], k;

i = 0;

while (en[i] != -1)


{

ct = temp[i];

k = 1;

for (j = 0; j < key; j++)

k = k * ct;

k = k % n;

pt = k + 96;

m[i] = pt;

i++;

m[i] = -1;

printf("\nTHE DECRYPTED MESSAGE IS\n");

for (i = 0; m[i] != -1; i++)

printf("%c", m[i]);
}

 int isPrime(int) – This function checks if the number is prime or not.


 int gcd(int, int) – This function returns the greatest common divisor of two numbers.
 int totient(int, int) – This function returns the totient of a number.
 int randome(int) – This function returns a random number less than the given
number.
 int private_key(int, int) – This function returns the private key.
 long pomod(long, long, long) – This function returns the modular exponentiation of
a number.
 char *encrypt(char *, long, long) – This function encrypts the message.
 char *decrypt(char *, long, long) – This function decrypts the message.

 Example:
Enter the value of p: 7
Enter the value of q: 19
 n = pq = 7 * 19 = 133
λ(n) = (p – 1)(q – 1) = λ(n) = (7 – 1)(19 – 1) = 108
 The number e should be less than 108 and greater than 1.
Thus, (i * e) % λ(n) = 1, (65 * 5) % 108 = 1
The value of n is 133
The value of λ(n) is 108
The value of e is 5
The value of d is 65

You might also like