0% found this document useful (0 votes)
45 views36 pages

CNS 41 (File)

The document describes implementations of 3 classical ciphers: 1) Caesar cipher for encryption and decryption of messages with a shift key. 2) Monoalphabetic cipher for substitution cipher encryption and decryption with a fixed alphabet mapping. 3) Polyalphabetic cipher (Vigenere cipher) for polyalphabetic substitution cipher encryption and decryption using a repeating keyword. Pseudocode and C code implementations are provided for each cipher.

Uploaded by

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

CNS 41 (File)

The document describes implementations of 3 classical ciphers: 1) Caesar cipher for encryption and decryption of messages with a shift key. 2) Monoalphabetic cipher for substitution cipher encryption and decryption with a fixed alphabet mapping. 3) Polyalphabetic cipher (Vigenere cipher) for polyalphabetic substitution cipher encryption and decryption using a repeating keyword. Pseudocode and C code implementations are provided for each cipher.

Uploaded by

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

MADH UBEN & BHANUBHAI PA TEL INSTI TUTE OF TE CHNOLOGY

(A CO NS T I TU ENT COL LEG E O F CVM UN I VER S IT Y )


DE PARTMENT OF IN FORMATION TECHNOLOGY

3 16 16 06 – C RYP TOG RAPH Y AND N ET WORK S EC U RIT Y

Practical – 1

Aim: Implement Caesar cipher encryption-decryption.

Source Code:

// encryption
#include<stdio.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);
return 0;
}

1 Enrolment Number: 190630116041 Name: Krupa M. Patel


MADH UBEN & BHANUBHAI PA TEL INSTI TUTE OF TE CHNOLOGY
(A CO NS T I TU ENT COL LEG E O F CVM UN I VER S IT Y )
DE PARTMENT OF IN FORMATION TECHNOLOGY

3 16 16 06 – C RYP TOG RAPH Y AND N ET WORK S EC U RIT Y

//DECRYPTION
#include<stdio.h>

int main()
{
char message[100], ch;
int i, key;
printf("Enter a message to decrypt: ");
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 < '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("Decrypted message: %s", message);
return 0;
}

2 Enrolment Number: 190630116041 Name: Krupa M. Patel


MADH UBEN & BHANUBHAI PA TEL INSTI TUTE OF TE CHNOLOGY
(A CO NS T I TU ENT COL LEG E O F CVM UN I VER S IT Y )
DE PARTMENT OF IN FORMATION TECHNOLOGY

3 16 16 06 – C RYP TOG RAPH Y AND N ET WORK S EC U RIT Y

Output:

3 Enrolment Number: 190630116041 Name: Krupa M. Patel


MADH UBEN & BHANUBHAI PA TEL INSTI TUTE OF TE CHNOLOGY
(A CO NS T I TU ENT COL LEG E O F CVM UN I VER S IT Y )
DE PARTMENT OF IN FORMATION TECHNOLOGY

3 16 16 06 – C RYP TOG RAPH Y AND N ET WORK S EC U RIT Y

Practical – 2
Aim: Implement monoalphabetic cipher encryption-decryption.

Source Code:

// implement monoalphabetic cipher encryption-decryption.


#include<stdio.h>
#include<conio.h>
#include<string.h>
int main()
{

char
pt[26]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','
W','X','Y','Z'};
char
ct[26]={'Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G','H','J','K','L','Z','X','C','V
','B','N','M'};
char p[20]={'\0'},c[20]={'\0'},r[20]={'\0'};
int i,j;

printf("\n enter the plain text:");


gets(p);
//converting plain text into cipher text (encryption)
for(i=0;i<strlen(p);i++)
{
for(j=0;j<26;j++)
{
if(pt[j]==p[i])
{
c[i]=ct[j];
}
}
}
printf("\n cipher text is: %s",c);

//converting cipher text into plain text (decryption)


for(i=0;i<strlen(c);i++)
{

4 Enrolment Number: 190630116041 Name: Krupa M. Patel


MADH UBEN & BHANUBHAI PA TEL INSTI TUTE OF TE CHNOLOGY
(A CO NS T I TU ENT COL LEG E O F CVM UN I VER S IT Y )
DE PARTMENT OF IN FORMATION TECHNOLOGY

3 16 16 06 – C RYP TOG RAPH Y AND N ET WORK S EC U RIT Y

for(j=0;j<26;j++)
{
if(ct[j]==c[i])
{
r[i]=pt[j];
}
}
}
printf("\n \n plain text is: %s",r);
getch();
}

Output:

5 Enrolment Number: 190630116041 Name: Krupa M. Patel


MADH UBEN & BHANUBHAI PA TEL INSTI TUTE OF TE CHNOLOGY
(A CO NS T I TU ENT COL LEG E O F CVM UN I VER S IT Y )
DE PARTMENT OF IN FORMATION TECHNOLOGY

3 16 16 06 – C RYP TOG RAPH Y AND N ET WORK S EC U RIT Y

Practical – 3

Aim: Implement polyalphabetic cipher encryption-decryption.

Source Code:
//implement polyalphabetic cipher encryption-decryption.
#include<stdio.h>
#include<conio.h>
#include<string.h>
int main()
{
char msg[30],key[30],k[20],ct[20],pt[20];
int lenm,lenk,i,j;

printf("Enter Message : ");


gets(msg);
printf("Enter Key : ");
gets(key);
lenm=strlen(msg);
lenk=strlen(key);
for(i=0;i<lenm;i++,j++)
{
if(j==lenk)
{
j=0;
}
k[i]=key[j];
}
for(i=0;i<lenm;i++)
{
ct[i]=((msg[i]+k[i])%26)+'A';
}
ct[i]='\0';
for(i=0;i<lenm;i++)
{
pt[i]=(((ct[i]-k[i])+26)%26)+'A';
}
pt[i]='\0';
printf("\nEncrypted Message : %s", ct);

6 Enrolment Number: 190630116041 Name: Krupa M. Patel


MADH UBEN & BHANUBHAI PA TEL INSTI TUTE OF TE CHNOLOGY
(A CO NS T I TU ENT COL LEG E O F CVM UN I VER S IT Y )
DE PARTMENT OF IN FORMATION TECHNOLOGY

3 16 16 06 – C RYP TOG RAPH Y AND N ET WORK S EC U RIT Y

printf("\nDecrypted Message : %s", pt);


getch();
}

Output:

7 Enrolment Number: 190630116041 Name: Krupa M. Patel


MADH UBEN & BHANUBHAI PA TEL INSTI TUTE OF TE CHNOLOGY
(A CO NS T I TU ENT COL LEG E O F CVM UN I VER S IT Y )
DE PARTMENT OF IN FORMATION TECHNOLOGY

3 16 16 06 – C RYP TOG RAPH Y AND N ET WORK S EC U RIT Y

Practical – 4
Aim: Implement playfair cipher encryption-decryption.

Source Code:

//implement playfair cipher encryption-decryption.


#include<stdio.h>
#include<string.h>
#include<ctype.h>
int removerepeated(int size,int a[]);
int insertelementat(int position,int a[],int size);
main()
{
int
i,j,k,numstr[100],numcipher[100],numkey[100],lenkey,templen,tempkey[1
00],flag=-1,size,cipherkey[5][5],lennumstr,row1,row2,col1,col2;
char str[100],key[100];
printf("Enter a string\n");
gets(str);
//converting entered string to Capital letters
for(i=0,j=0;i<strlen(str);i++)
{
if(str[i]!=' ')
{
str[j]=toupper(str[i]);
j++;
}
}
str[j]='\0';
printf("Entered String is %s\n",str);
//Storing string in terms of ascii and to restore spaces I used -20
size=strlen(str);
for(i=0;i<size;i++)
{
if(str[i]!=' ')
numstr[i]=str[i]-'A';
}
lennumstr=i;
//Key processing
printf("Enter the key (Non repeated elements if possible)\n");
8 Enrolment Number: 190630116041 Name: Krupa M. Patel
MADH UBEN & BHANUBHAI PA TEL INSTI TUTE OF TE CHNOLOGY
(A CO NS T I TU ENT COL LEG E O F CVM UN I VER S IT Y )
DE PARTMENT OF IN FORMATION TECHNOLOGY

3 16 16 06 – C RYP TOG RAPH Y AND N ET WORK S EC U RIT Y

gets(key);
//converting entered key to Capital letters
for(i=0,j=0;i<strlen(key);i++)
{
if(key[i]!=' ')
{
key[j]=toupper(key[i]);
j++;
}
}
key[j]='\0';
printf("%s\n",key);
//Storing key in terms of ascii
k=0;
for(i=0;i<strlen(key)+26;i++)
{
if(i<strlen(key))
{
if(key[i]=='J')
{
flag=8;
printf("%d",flag);
}
numkey[i]=key[i]-'A';
}
else
{
if(k!=9 && k!=flag)//Considering I=J and taking I in place of J except
when J is there in key ignoring I
{
numkey[i]=k;
}
k++;
}
}
templen=i;
lenkey=removerepeated(templen,numkey);
printf("Entered key converted according to Play Fair Cipher rule\n");
for(i=0;i<lenkey;i++)

9 Enrolment Number: 190630116041 Name: Krupa M. Patel


MADH UBEN & BHANUBHAI PA TEL INSTI TUTE OF TE CHNOLOGY
(A CO NS T I TU ENT COL LEG E O F CVM UN I VER S IT Y )
DE PARTMENT OF IN FORMATION TECHNOLOGY

3 16 16 06 – C RYP TOG RAPH Y AND N ET WORK S EC U RIT Y

{
printf("%c",numkey[i]+'A');
}
printf("\n");
//Arranging the key in 5x5 grid
k=0;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
cipherkey[i][j]=numkey[k];
k++;
}
}
printf("Arranged key\n");
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
printf("%c ",cipherkey[i][j]+'A');
}
printf("\n");
}
//Message Processing
for(i=0;i<lennumstr;i+=2)
{
if(numstr[i]==numstr[i+1])
{
insertelementat(i+1,numstr,lennumstr);
lennumstr++;
}
}
if(lennumstr%2!=0)
{
insertelementat(lennumstr,numstr,lennumstr);
lennumstr++;
}
printf("Entered String/Message After Processing according to Play fair
cipher rule\n");

10 Enrolment Number: 190630116041 Name: Krupa M. Patel


MADH UBEN & BHANUBHAI PA TEL INSTI TUTE OF TE CHNOLOGY
(A CO NS T I TU ENT COL LEG E O F CVM UN I VER S IT Y )
DE PARTMENT OF IN FORMATION TECHNOLOGY

3 16 16 06 – C RYP TOG RAPH Y AND N ET WORK S EC U RIT Y

for(i=0;i<lennumstr;i++)
{
printf("%c",numstr[i]+'A');
}
for(k=0;k<lennumstr;k+=2)
{
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if(numstr[k]==cipherkey[i][j])
{
row1=i;
col1=j;
}
if(numstr[k+1]==cipherkey[i][j])
{
row2=i;
col2=j;
}
}
}
//Only change between Ecryption to decryption is changing + to -
//If negative add 5 to that row or column
if(row1==row2)
{
col1=(col1-1)%5;
col2=(col2-1)%5;
if(col1<0)
{
col1=5+col1;
}
if(col2<0)
{
col2=5+col2;
}
numcipher[k]=cipherkey[row1][col1];
numcipher[k+1]=cipherkey[row2][col2];
}

11 Enrolment Number: 190630116041 Name: Krupa M. Patel


MADH UBEN & BHANUBHAI PA TEL INSTI TUTE OF TE CHNOLOGY
(A CO NS T I TU ENT COL LEG E O F CVM UN I VER S IT Y )
DE PARTMENT OF IN FORMATION TECHNOLOGY

3 16 16 06 – C RYP TOG RAPH Y AND N ET WORK S EC U RIT Y

if(col1==col2)
{
row1=(row1-1)%5;
row2=(row2-1)%5;
if(row1<0)
{
row1=5+row1;
}
if(row2<0)
{
row2=5+row2;
}
numcipher[k]=cipherkey[row1][col1];
numcipher[k+1]=cipherkey[row2][col2];
}
if(row1!=row2&&col1!=col2)
{
numcipher[k]=cipherkey[row1][col2];
numcipher[k+1]=cipherkey[row2][col1];
}
}
printf("\nCipher Text is\n");
for(i=0;i<lennumstr;i++)
{
if((numcipher[i]+'A')!='X')//Should remove extra 'X' which were created
during Encryption
printf("%c",numcipher[i]+'A');
}
printf("\n");
}
int removerepeated(int size,int a[])
{
int i,j,k;
for(i=0;i<size;i++)
{
for(j=i+1;j<size;)
{
if(a[i]==a[j])
{

12 Enrolment Number: 190630116041 Name: Krupa M. Patel


MADH UBEN & BHANUBHAI PA TEL INSTI TUTE OF TE CHNOLOGY
(A CO NS T I TU ENT COL LEG E O F CVM UN I VER S IT Y )
DE PARTMENT OF IN FORMATION TECHNOLOGY

3 16 16 06 – C RYP TOG RAPH Y AND N ET WORK S EC U RIT Y

for(k=j;k<size;k++)
{
a[k]=a[k+1];
}
size--;
}
else
{
j++;
}
}
}
return(size);
}
int insertelementat(int position,int a[],int size)
{
int i,insitem=23,temp[size+1];
for(i=0;i<=size;i++)
{
if(i<position)
{
temp[i]=a[i];
}
if(i>position)
{
temp[i]=a[i-1];
}
if(i==position)
{
temp[i]=insitem;
}
}
for(i=0;i<=size;i++)
{
a[i]=temp[i];
}
}

13 Enrolment Number: 190630116041 Name: Krupa M. Patel


MADH UBEN & BHANUBHAI PA TEL INSTI TUTE OF TE CHNOLOGY
(A CO NS T I TU ENT COL LEG E O F CVM UN I VER S IT Y )
DE PARTMENT OF IN FORMATION TECHNOLOGY

3 16 16 06 – C RYP TOG RAPH Y AND N ET WORK S EC U RIT Y

Output:

14 Enrolment Number: 190630116041 Name: Krupa M. Patel


MADH UBEN & BHANUBHAI PA TEL INSTI TUTE OF TE CHNOLOGY
(A CO NS T I TU ENT COL LEG E O F CVM UN I VER S IT Y )
DE PARTMENT OF IN FORMATION TECHNOLOGY

3 16 16 06 – C RYP TOG RAPH Y AND N ET WORK S EC U RIT Y

Practical – 5
Aim: Implement Hill cipher encryption-decryption.

Source Code:

//implement hill cipher encryption-decryption.


#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();
int 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));
}
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: ");

15 Enrolment Number: 190630116041 Name: Krupa M. Patel


MADH UBEN & BHANUBHAI PA TEL INSTI TUTE OF TE CHNOLOGY
(A CO NS T I TU ENT COL LEG E O F CVM UN I VER S IT Y )
DE PARTMENT OF IN FORMATION TECHNOLOGY

3 16 16 06 – C RYP TOG RAPH Y AND N ET WORK S EC U RIT Y

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: ");
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) {
c[i][j] = c[i][j]*q - p*c[k][j];
b[i][j] = b[i][j]*q - p*b[k][j];
}
}
}

16 Enrolment Number: 190630116041 Name: Krupa M. Patel


MADH UBEN & BHANUBHAI PA TEL INSTI TUTE OF TE CHNOLOGY
(A CO NS T I TU ENT COL LEG E O F CVM UN I VER S IT Y )
DE PARTMENT OF IN FORMATION TECHNOLOGY

3 16 16 06 – C RYP TOG RAPH Y AND N ET WORK S EC U RIT Y

}
for(i = 0; i < 3; i++)
for(j = 0; j < 3; j++)
b[i][j] = b[i][j]/c[i][i];

Output:

17 Enrolment Number: 190630116041 Name: Krupa M. Patel


MADH UBEN & BHANUBHAI PA TEL INSTI TUTE OF TE CHNOLOGY
(A CO NS T I TU ENT COL LEG E O F CVM UN I VER S IT Y )
DE PARTMENT OF IN FORMATION TECHNOLOGY

3 16 16 06 – C RYP TOG RAPH Y AND N ET WORK S EC U RIT Y

Practical – 6
Aim: Implement Rail Fence and transposition cipher. Both are permutation
cipher. Analyze strength of the cipher in terms of cryptanalysis.

Source Code:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
main()
{
int i,j,len,rails,count,code[100][1000];
char str[1000];
printf("Enter a Secret Message\n");
gets(str);
len=strlen(str);
printf("Enter number of rails\n");
scanf("%d",&rails);
for(i=0;i<rails;i++)
{
for(j=0;j<len;j++)
{
code[i][j]=0;
}
}
count=0;
j=0;
while(j<len)
{
if(count%2==0)
{
for(i=0;i<rails;i++)
{
//strcpy(code[i][j],str[j]);
code[i][j]=(int)str[j];
j++;
}

18 Enrolment Number: 190630116041 Name: Krupa M. Patel


MADH UBEN & BHANUBHAI PA TEL INSTI TUTE OF TE CHNOLOGY
(A CO NS T I TU ENT COL LEG E O F CVM UN I VER S IT Y )
DE PARTMENT OF IN FORMATION TECHNOLOGY

3 16 16 06 – C RYP TOG RAPH Y AND N ET WORK S EC U RIT Y

else
{

for(i=rails-2;i>0;i--)
{
code[i][j]=(int)str[j];
j++;
}
}

count++;
}

for(i=0;i<rails;i++)
{
for(j=0;j<len;j++)
{
if(code[i][j]!=0)
printf("%c",code[i][j]);
}

}
printf("\n");
}

19 Enrolment Number: 190630116041 Name: Krupa M. Patel


MADH UBEN & BHANUBHAI PA TEL INSTI TUTE OF TE CHNOLOGY
(A CO NS T I TU ENT COL LEG E O F CVM UN I VER S IT Y )
DE PARTMENT OF IN FORMATION TECHNOLOGY

3 16 16 06 – C RYP TOG RAPH Y AND N ET WORK S EC U RIT Y

Output:

20 Enrolment Number: 190630116041 Name: Krupa M. Patel


MADH UBEN & BHANUBHAI PA TEL INSTI TUTE OF TE CHNOLOGY
(A CO NS T I TU ENT COL LEG E O F CVM UN I VER S IT Y )
DE PARTMENT OF IN FORMATION TECHNOLOGY

3 16 16 06 – C RYP TOG RAPH Y AND N ET WORK S EC U RIT Y

Practical – 7

Aim: Implement RSA encryption-decryption algorithm.

Source Code:
#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();
int main()
{
printf("\nENTER FIRST PRIME NUMBER\n");
scanf("%ld",&p);
flag=prime(p);
if(flag==0)
{
printf("\nWRONG INPUT\n");
exit(1);
}
printf("\nENTER ANOTHER PRIME NUMBER\n");
scanf("%ld",&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++)

21 Enrolment Number: 190630116041 Name: Krupa M. Patel


MADH UBEN & BHANUBHAI PA TEL INSTI TUTE OF TE CHNOLOGY
(A CO NS T I TU ENT COL LEG E O F CVM UN I VER S IT Y )
DE PARTMENT OF IN FORMATION TECHNOLOGY

3 16 16 06 – C RYP TOG RAPH Y AND N ET WORK S EC U RIT Y

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();
return 0;
}

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;

22 Enrolment Number: 190630116041 Name: Krupa M. Patel


MADH UBEN & BHANUBHAI PA TEL INSTI TUTE OF TE CHNOLOGY
(A CO NS T I TU ENT COL LEG E O F CVM UN I VER S IT Y )
DE PARTMENT OF IN FORMATION TECHNOLOGY

3 16 16 06 – C RYP TOG RAPH Y AND N ET WORK S EC U RIT Y

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++;
}

23 Enrolment Number: 190630116041 Name: Krupa M. Patel


MADH UBEN & BHANUBHAI PA TEL INSTI TUTE OF TE CHNOLOGY
(A CO NS T I TU ENT COL LEG E O F CVM UN I VER S IT Y )
DE PARTMENT OF IN FORMATION TECHNOLOGY

3 16 16 06 – C RYP TOG RAPH Y AND N ET WORK S EC U RIT Y

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

24 Enrolment Number: 190630116041 Name: Krupa M. Patel


MADH UBEN & BHANUBHAI PA TEL INSTI TUTE OF TE CHNOLOGY
(A CO NS T I TU ENT COL LEG E O F CVM UN I VER S IT Y )
DE PARTMENT OF IN FORMATION TECHNOLOGY

3 16 16 06 – C RYP TOG RAPH Y AND N ET WORK S EC U RIT Y

Output:-

25 Enrolment Number: 190630116041 Name: Krupa M. Patel


MADH UBEN & BHANUBHAI PA TEL INSTI TUTE OF TE CHNOLOGY
(A CO NS T I TU ENT COL LEG E O F CVM UN I VER S IT Y )
DE PARTMENT OF IN FORMATION TECHNOLOGY

3 16 16 06 – C RYP TOG RAPH Y AND N ET WORK S EC U RIT Y

Practical – 8
Aim: Implement Euclid Algorithm to find GCD.

Source code:-
#include <stdio.h>
int main() {
int m, n; /* given numbers */

printf("Enter-two integer numbers: ");


scanf ("%d %d", &m, &n);
while (n > 0) {
int r = m % n;
m = n;
n = r;
}
printf ("GCD = %d \n",m);
}

Output:-

26 Enrolment Number: 190630116041 Name: Krupa M. Patel


MADH UBEN & BHANUBHAI PA TEL INSTI TUTE OF TE CHNOLOGY
(A CO NS T I TU ENT COL LEG E O F CVM UN I VER S IT Y )
DE PARTMENT OF IN FORMATION TECHNOLOGY

3 16 16 06 – C RYP TOG RAPH Y AND N ET WORK S EC U RIT Y

Practical – 9
Aim: Generate random number of 32 bits. Use different random
number generation algorithms. Which method gives the best?
Random number must pass 3 tests (1) Uniformity (2) Scalability (3)
Consistency. First method Linear congruential generator Xn+1=
(aXn+c) mod m. m, a, c, X0 are integers. Second method: Blum Blum
shub generator.

Source code:-

#include<stdio.h>
#include<stdint.h>
int linearCong(int xo, int m, int a, int c, long randNums[], int n)
{
int i;
randNums[0] = xo;
for(i=1; i<n; i++)
randNums[i] = ((randNums[i-1] * a) + c) % m;
return 0;
}
int printIn32Bit(long n, int bit)
{
if(bit >= 8 * sizeof(n))
return 0;
printIn32Bit(n/2, bit+1);
printf("%ld", n%2);
if(bit%8 == 0)
printf(" ");
if(bit == 0)
printf("\n");
}
int main()
{
int xo, m, c, a, n, i;
printf("\nSeed Value \t\t :");
scanf("%d", &xo);
printf("Modoulo value \t\t :");
scanf("%d", &m);
printf("Multiplier term \t :");

27 Enrolment Number: 190630116041 Name: Krupa M. Patel


MADH UBEN & BHANUBHAI PA TEL INSTI TUTE OF TE CHNOLOGY
(A CO NS T I TU ENT COL LEG E O F CVM UN I VER S IT Y )
DE PARTMENT OF IN FORMATION TECHNOLOGY

3 16 16 06 – C RYP TOG RAPH Y AND N ET WORK S EC U RIT Y

scanf("%d", &a);

printf("Increment term \t\t :");


scanf("%d", &c);
printf("Total no. of random numbers :");
scanf("%d", &n);

long randNums[n];
linearCong(xo, m, a, c, randNums, n);
printf("\n\nRandom 32 Bit integers using Linear Congruential
Generator\n\n");
for(i=0; i<n; i++)
{
uint32_t x1 = randNums[i];
printf("%5d. %5u :",i+1, x1);
printIn32Bit(x1, 0);
}
printf("\n\n");
return 0;
}

Output:-

28 Enrolment Number: 190630116041 Name: Krupa M. Patel


MADH UBEN & BHANUBHAI PA TEL INSTI TUTE OF TE CHNOLOGY
(A CO NS T I TU ENT COL LEG E O F CVM UN I VER S IT Y )
DE PARTMENT OF IN FORMATION TECHNOLOGY

3 16 16 06 – C RYP TOG RAPH Y AND N ET WORK S EC U RIT Y

Practical-10
Aim: Implement Diffi-Hellman Key Exchange Method.

Source code:-
#include<stdio.h>
#include<math.h>

long long int power(long long int a, long long int b,long long int P)
{
if (b == 1)
return a;
else
return (((long long int)pow(a, b)) % P);
}

int main()
{
long long int P, G, x, a, y, b, ka, kb;

// Both the persons will be agreed upon the public keys G and P
P = 23; // A prime number P is taken
printf("The value of P : %lld\n", P);

G = 9; // A primitive root for P, G is taken


printf("The value of G : %lld\n\n", G);

// Alice will choose the private key a


a = 4; // a is the chosen private key
printf("The private key a for Alice : %lld\n", a);
x = power(G, a, P); // gets the generated key

// Bob will choose the private key b


b = 3; // b is the chosen private key
printf("The private key b for Bob : %lld\n\n", b);
y = power(G, b, P); // gets the generated key

// Generating the secret key after the exchange of keys


ka = power(y, a, P); // Secret key for Alice
kb = power(x, b, P); // Secret key for Bob
29 Enrolment Number: 190630116041 Name: Krupa M. Patel
MADH UBEN & BHANUBHAI PA TEL INSTI TUTE OF TE CHNOLOGY
(A CO NS T I TU ENT COL LEG E O F CVM UN I VER S IT Y )
DE PARTMENT OF IN FORMATION TECHNOLOGY

3 16 16 06 – C RYP TOG RAPH Y AND N ET WORK S EC U RIT Y

printf("Secret key for the Alice is : %lld\n", ka);


printf("Secret Key for the Bob is : %lld\n", kb);

return 0;
}

Output:-

30 Enrolment Number: 190630116041 Name: Krupa M. Patel


MADH UBEN & BHANUBHAI PA TEL INSTI TUTE OF TE CHNOLOGY
(A CO NS T I TU ENT COL LEG E O F CVM UN I VER S IT Y )
DE PARTMENT OF IN FORMATION TECHNOLOGY

3 16 16 06 – C RYP TOG RAPH Y AND N ET WORK S EC U RIT Y

Practical-11
Aim: Implement a digital signature algorithm.

Source code:-
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <stdlib.h>
long int findGCD(long int, long int);
long int multipicative_inverse(long int, long int);
void key_pair(long int e, long int n, long int d)
{
printf("\nEncryption key (Private Key Pair) (e,n)\t :(%ld, %ld)", d, n);
printf("\nDecryption key (Public Key Pair) (d,n)\t : (%ld, %ld)\n", e, n);
}
long int multipicative_inverse(long int m, long int b)
{
long int a1 = 1, a2 = 0, a3 = m, b1 = 0, b2 = 1, b3 = b, t1, t2, t3, q;
top:
if (b3 == 0)
return 0;
else if (b3 == 1)
{
if (b2 < 0)
return (b2 + m);
else
return b2;
}
q = a3 / b3;
t1 = b1;
t2 = b2;
t3 = b3;
b1 = a1 - (q * b1);
b2 = a2 - (q * b2);
b3 = a3 - (q * b3);
a1 = t1;
a2 = t2;
a3 = t3;
// printf("\nb2=%ld\n",b2);

31 Enrolment Number: 190630116041 Name: Krupa M. Patel


MADH UBEN & BHANUBHAI PA TEL INSTI TUTE OF TE CHNOLOGY
(A CO NS T I TU ENT COL LEG E O F CVM UN I VER S IT Y )
DE PARTMENT OF IN FORMATION TECHNOLOGY

3 16 16 06 – C RYP TOG RAPH Y AND N ET WORK S EC U RIT Y

goto top;
}
long int findGCD(long int e, long int fn)
{
long int c = e, d = fn;
long int r;
while (d != 0)
{
r = c % d;
c = d;
d = r;
}
return c;
}
int main()
{
long int pt, p, q, n, fn, e = 2, temp, d, ct;
printf("\n\nGenerating Signature\n\n");
printf("\nEnter your signature to encrypt\t\t :");
scanf("%d", &pt);
printf("\nEnter two prime numbers p and q\t\t :");
scanf("%ld %ld", &p, &q);
n = p * q;
fn = (p - 1) * (q - 1);
temp = findGCD(e, fn);
while (temp != 1)
{
e++;
temp = findGCD(e, fn);
}
d = multipicative_inverse(fn, e);
if (d == 0)
{
printf("\nKey generation is not possible for given p and q.\n\n");
exit(0);
}
ct = fmod(pow(pt, d), n);
key_pair(e, n, d);
printf("\n\nGenerated Encrypted signature text\t :%ld", ct);

32 Enrolment Number: 190630116041 Name: Krupa M. Patel


MADH UBEN & BHANUBHAI PA TEL INSTI TUTE OF TE CHNOLOGY
(A CO NS T I TU ENT COL LEG E O F CVM UN I VER S IT Y )
DE PARTMENT OF IN FORMATION TECHNOLOGY

3 16 16 06 – C RYP TOG RAPH Y AND N ET WORK S EC U RIT Y

printf("\n\n\nVerifying Signature\n\n");
printf("Encrypted Signature\t\t\t :%ld", ct);
printf("\nEnter Public Key Pair (e,n)\t\t : (%ld, %ld)", e, n);
pt = fmod(pow(ct, e), n);
printf("\n\n\nDecrypted signature\t\t\t : %ld", pt);
printf("\n\nVERIFIED\n\n");
return 0;
}

Output:-

33 Enrolment Number: 190630116041 Name: Krupa M. Patel


MADH UBEN & BHANUBHAI PA TEL INSTI TUTE OF TE CHNOLOGY
(A CO NS T I TU ENT COL LEG E O F CVM UN I VER S IT Y )
DE PARTMENT OF IN FORMATION TECHNOLOGY

3 16 16 06 – C RYP TOG RAPH Y AND N ET WORK S EC U RIT Y

Practical-12
Aim: Read traffic going on network. Analyze the traffic, Connect to
internet and read what is going on internet. Hint: Use Wireshark.

Steps:-

1. Go to Start and Search Wireshark:

2. Open Wireshark: desktop UI of Wireshark:

34 Enrolment Number: 190630116041 Name: Krupa M. Patel


MADH UBEN & BHANUBHAI PA TEL INSTI TUTE OF TE CHNOLOGY
(A CO NS T I TU ENT COL LEG E O F CVM UN I VER S IT Y )
DE PARTMENT OF IN FORMATION TECHNOLOGY

3 16 16 06 – C RYP TOG RAPH Y AND N ET WORK S EC U RIT Y

3. Select the Interface you want to sniff:

4. Start Packet capturing:

35 Enrolment Number: 190630116041 Name: Krupa M. Patel


MADH UBEN & BHANUBHAI PA TEL INSTI TUTE OF TE CHNOLOGY
(A CO NS T I TU ENT COL LEG E O F CVM UN I VER S IT Y )
DE PARTMENT OF IN FORMATION TECHNOLOGY

3 16 16 06 – C RYP TOG RAPH Y AND N ET WORK S EC U RIT Y

5. Now we can see analyze packet captured in the Wireshark:


 Filter http packet.

 Select Packet. And then we can see all the details of packet.

36 Enrolment Number: 190630116041 Name: Krupa M. Patel

You might also like