Download as pdf or txt
Download as pdf or txt
You are on page 1of 20

NAME: JAINAM ACHARYA ENROLLMENT NO:-20BEIT30001

Practical:-1
Aim:- To implement Caesar Cipher Encryption – Decryption Code:-
#include<stdio.h>
#include<conio.h>

int main() { char message[100], ch;


int i, key; printf("Enter a message to
encrypt: "); gets(message);
printf("Enter key: "); scanf("%d",
&key); for(i = 0; message[i] != '\0';
++i){ ch = message[i]; if(ch
>= 'a' && ch <= 'z'){ ch = ch +
key; if(ch > 'z'){ ch =
ch - 'z' + 'a' - 1;
}
message[i] = ch;
}
else if(ch >= 'A' && ch <= 'Z'){
ch = ch + key; if(ch > 'Z'){

ch = ch - 'Z' + 'A' - 1;
}
message[i] = ch;
}
}
printf("Encrypted message: %s", message);
for(i = 0; message[i] != '\0'; ++i){ ch =

1
NAME: JAINAM ACHARYA ENROLLMENT NO:-20BEIT30001

message[i]; if(ch >= 'a' && ch <= 'z'){


ch = ch - key; if(ch < 'a'){
ch = ch + 'z' - 'a' + 1;
}
message[i] = ch;
}
else if(ch >= 'A' && ch <= 'Z'){
ch = ch - key; if(ch < 'A'){
ch = ch + 'Z' - 'A' + 1;
}
message[i] = ch;
}
}
printf("\nDecrypted message: %s", message);
return 0;
}

2
NAME: JAINAM ACHARYA ENROLLMENT NO:-20BEIT30001

Output:

3
NAME: JAINAM ACHARYA ENROLLMENT NO:-20BEIT30001

Practical:-2
Aim:- To implement Play-Fair Cipher Technique. Code:-
#include<stdio.h>

int check(char table[5][5], char k) {


int i, j; for (i = 0; i <
5; ++i) for (j = 0; j <
5; ++j) { if
(table[i][j] == k)
return 0;
}
return 1;
}

void main() {
int i, j, key_len;
char table[5][5]; for (i
= 0; i < 5; ++i) for (j
= 0; j < 5; ++j)
table[i][j] = '0';

printf("Enter the length of the Key: ");


scanf("%d", &key_len);

char key[key_len];

4
NAME: JAINAM ACHARYA ENROLLMENT NO:-20BEIT30001

printf("Enter the Key: ");


for (i = -1; i < key_len; ++i) {
scanf("%c", &key[i]); if
(key[i] == 'j') key[i] = 'i';
}
int flag;
int count = 0;

for (i = 0; i < 5; ++i) {


for (j = 0; j < 5; ++j) {
flag = 0; while (flag
!= 1) { if (count >
key_len) goto l1;

flag = check(table, key[count]);


++count;
} table[i][j] =
key[(count - 1)];
}
}

l1: printf("\n");

int val = 97; for (i = 0; i < 5; ++i) { for (j


= 0; j < 5; ++j) { if (table[i][j] >= 97 &&
table[i][j] <= 123) {

5
NAME: JAINAM ACHARYA ENROLLMENT NO:-20BEIT30001

} else { flag = 0;
while (flag != 1) { if ('j' ==
(char) val) ++val;
flag = check(table, (char) val);
++val; }
table[i][j] = (char) (val - 1);
}
}
}

printf("The Matrix is as follows:\n");


for (i = 0; i < 5; ++i) { for (j = 0; j
< 5; ++j) { printf("%c ",
table[i][j]);
}
printf("\n");
}

int l = 0;
printf("\nEnter the length of plain text: ");
scanf("%d", &l);

printf("\nEnter the Plain text: ");


char p[l]; for (i = -1; i < l; ++i)
{ scanf("%c", &p[i]);
}

6
NAME: JAINAM ACHARYA ENROLLMENT NO:-20BEIT30001

for (i = -1; i < l; ++i) {


if (p[i] == 'j') p[i]
= 'i';
}

for (i = -1; i < l; ++i){


printf("%c ", p[i]);
} count = 0; for (i
= -1; i < l; ++i) { if
(p[i] == p[i + 1])
count = count + 1;
} int length = 0;
if ((l + count) % 2 != 0){
length = (l + count + 1);} else{

length = (l + count);}

char p1[length];

char temp1; int count1


= 0; for (i = -1; i < l; ++i)
{ p1[count1] = p[i];
if (p[i] == p[i + 1]) {
count1 = count1 + 1;
if (p[i] == 'x')
p1[count1] = 'z'; else
p1[count1] = 'x';
}
7
NAME: JAINAM ACHARYA ENROLLMENT NO:-20BEIT30001

count1 = count1 + 1;
}

char bogus; if ((l +


count) % 2 != 0) { if
(p1[length - 1] == 'x')
p1[length] = 'z'; else
p1[length] = 'x';
}

printf("\nThe final text is:");


for (i = 0; i <= length; ++i)
printf("%c ", p1[i]);

char cipher_text[length];
int r1, r2, c1, c2; int k1;

for (k1 = 1; k1 <= length; ++k1) {


for (i = 0; i < 5; ++i) { for (j
= 0; j < 5; ++j) { if
(table[i][j] == p1[k1]) {
r1 = i; c1 = j;
} else if (table[i][j] == p1[k1 + 1]) {
r2 = i; c2 = j;
}

8
NAME: JAINAM ACHARYA ENROLLMENT NO:-20BEIT30001

}
}

if (r1 == r2) { cipher_text[k1] =


table[r1][(c1 + 1) % 5]; cipher_text[k1 + 1] =
table[r1][(c2 + 1) % 5];
}

else if (c1 == c2) { cipher_text[k1] =


table[(r1 + 1) % 5][c1]; cipher_text[k1 + 1] =
table[(r2 + 1) % 5][c1];
} else { cipher_text[k1] =
table[r1][c2]; cipher_text[k1 + 1] =
table[r2][c1];
}

k1 = k1 + 1;
}

printf("\n\nThe Cipher text is:\n ");


for (i = 1; i <= length; ++i)
printf("%c ", cipher_text[i]);

9
NAME: JAINAM ACHARYA ENROLLMENT NO:-20BEIT30001

Output:-

10
NAME: JAINAM ACHARYA ENROLLMENT NO:-20BEIT30001

Practical:-3
Aim:- To implement Poly-alphabetic Cipher (Vigener Cipher)
Technique
Code:-
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<ctype.h>

void main()
{ char pt[30], ct[20]={NULL}, key[20]={NULL},
rt[20]={NULL};
int i,
j;

printf("Enter plain text: ");


scanf("%s",pt);

printf("\nEnter the key: ");


scanf("%s",key);

j=0;

for(i=strlen(key); i<strlen(pt); i++)

11
NAME: JAINAM ACHARYA ENROLLMENT NO:-20BEIT30001

{
if(j==strlen(key))
{ j=0;
}
key[i]=key[j];
j++;
}

printf("\nThe new key is: %s",key);

for(i=0; i<strlen(pt); i++)


{
ct[i]=(((pt[i]-97)+(key[i]-97))%26)+97;
}

printf("\nCT is: %s",ct);

for(i=0; i<strlen(ct); i++)


{
if(ct[i]<key[i])
{
rt[i]=26+((ct[i]-97)-(key[i]-97))+97;
}
else {
rt[i]=(((ct[
12
NAME: JAINAM ACHARYA ENROLLMENT NO:-20BEIT30001

i]-97)-
(key[i]-
97))%26)
+97;

}
}

printf("\nPT is %s",rt);
return 0;
}

13
NAME: JAINAM ACHARYA ENROLLMENT NO:-20BEIT30001

Output:-

14
NAME: JAINAM ACHARYA ENROLLMENT NO:-20BEIT30001

Practical:-4
Aim:- To implement Hill Cipher Encryption
Code:-
#include<stdio.h>
#include<math.h>
float encrypt[3][1], decrypt[3][1], a[3][3], b[3][3], mes[3][1], c[3][3];
void encryption();
void decryption();
void getKeyMessage();
void inverse();
void main()
{
getKeyMessage();
encryption();
decryption();
}
void encryption()
{
int i, j, k;
for(i = 0; i < 3; i++)
for(j = 0; j < 1; j++)
for(k = 0; k < 3; k++)
encrypt[i][j] = encrypt[i][j] + a[i][k] * mes[k][j];
printf("\nEncrypted string is: ");
for(i = 0; i < 3; i++)
printf("%c", (char)(fmod(encrypt[i][0], 26) + 97));

15
NAME: JAINAM ACHARYA ENROLLMENT NO:-20BEIT30001

}
void decryption()
{
int i, j, k;
inverse();
for(i = 0; i < 3; i++)
for(j = 0; j < 1; j++)
for(k = 0; k < 3; k++)
decrypt[i][j] = decrypt[i][j] + b[i][k] * encrypt[k][j];
printf("\nDecrypted string is: ");
for(i = 0; i < 3; i++)
printf("%c", (char)(fmod(decrypt[i][0], 26) + 97));
printf("\n");
}
void getKeyMessage()
{
int i, j;
char msg[3];
printf("Enter 3x3 matrix for key (It should be inversible):\n");
for(i = 0; i < 3; i++)
for(j = 0; j < 3; j++)
{
scanf("%f", &a[i][j]);
c[i][j] = a[i][j];
}
printf("\nEnter a 3 letter string: ");

16
NAME: JAINAM ACHARYA ENROLLMENT NO:-20BEIT30001

scanf("%s", msg);
for(i = 0; i < 3; i++)
mes[i][0] = msg[i] - 97;
}
void inverse()
{
int i, j, k;
float p, q;
for(i = 0; i < 3; i++)
for(j = 0; j < 3; j++)
{
if(i == j)
b[i][j]=1;
else
b[i][j]=0;
}
for(k = 0; k < 3; k++)
{
for(i = 0; i < 3; i++)
{
p = c[i][k];
q = c[k][k];
for(j = 0; j < 3; j++)
{
if(i != k)
{

17
NAME: JAINAM ACHARYA ENROLLMENT NO:-20BEIT30001

c[i][j] = c[i][j]*q - p*c[k][j];


b[i][j] = b[i][j]*q - p*b[k][j];
}
}
}
}
for(i = 0; i < 3; i++)
for(j = 0; j < 3; j++)
b[i][j] = b[i][j] / c[i][i];
printf("\n\nInverse Matrix is:\n");
for(i = 0; i < 3; i++)
{
for(j = 0; j < 3; j++)
printf("%d ", b[i][j]);
printf("\n");
}
}
Output:-

18
NAME: JAINAM ACHARYA ENROLLMENT NO:-20BEIT30001

Practical:-5
Aim:- Write a program to implement Rail-Fence Encryption
Technique
Code:-
#include<stdio.h>
#include<string.h>
void main()
{
int i,j,k,l;
char a[20],c[20],d[20];
printf("\n\t\t RAIL FENCE TECHNIQUE");
printf("\n\nEnter the input string : ");
gets(a);
l=strlen(a);
//Ciphering/
for(i=0,j=0;i<l;i++)
{
if(i%2==0)
c[j++]=a[i];
}
for(i=0;i<l;i++)
{
if(i%2==1)
c[j++]=a[i];
}
c[j]='\0';
printf("\nCipher text after applying rail fence :");
printf("\n%s",c);
//Deciphering/
if(l%2==0)
k=l/2;

19
NAME: JAINAM ACHARYA ENROLLMENT NO:-20BEIT30001

else
k=(l/2)+1;
for(i=0,j=0;i<k;i++)
{
d[j]=c[i];
j=j+2;
}
for(i=k,j=1;i<l;i++)
{
d[j]=c[i];
j=j+2;
}
d[l]='\0';
printf("\nText after decryption : ");
printf("%s",d);
}

Output:-

20

You might also like