Header Ads Widget

Ticker

6/recent/ticker-posts

Implement RSA encryption-decryption algorithm

 Program:-

#include <stdio.h>

#include <conio.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()
{

    clrscr();

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

    scanf("%d", &p);

    flag = prime(p);

    if (flag == 0)
    {

        printf("\nWRONG INPUT\n");

        getch();

        exit(1);
    }

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

    scanf("%d", &q);

    flag = prime(q);

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

        printf("\nWRONG INPUT\n");

        getch();

        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();

    getch();
}

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]);
}

RSA Program Input

ENTER FIRST PRIME NUMBER
7

ENTER ANOTHER PRIME NUMBER
17

ENTER MESSAGE
hello

C-code-to-implement-RSA-Algorithm-2


Post a Comment

0 Comments