CNS alex
CNS alex
Practical: 1
Aim: Write a program to implement Caesar cipher Encryption – Decryption.
#include<stdio.h>
#include<conio.h>
void main()
{
char message[100],ch;
int i,key;
clrscr();
printf("enter message:");
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-97)%26+97;
message[i]=ch;
}
else if(ch>='A' && ch<='Z')
{
ch=(ch+key-65)%26+65;
message[i]=ch;
}
}
printf("encrypt message:%s",message);
printf("\n");
for(i=0;message[i]!='\0';++i)
{
ch=message[i];
if(ch>='a'&& ch<='z')
{
ch=(ch-key-97)%26+97;
message[i]=ch;
}
else if(ch>='A'&& ch<='Z')
{
ch=(ch-key-65)%26+65;
message[i]=ch;
}
}
printf("decrypt message:%s",message);
getch();
}
Output:
Practical: 2
Aim: Write a program to implement Mono-alphabetic cipher Encryption.
#include<stdio.h>
#include<conio.h>
#include<string.h>
void main()
{
char p[30],k[30],c[30];
int i,index,len;
clrscr();
printf("Enter PlainText==>");
gets(p);
len=strlen(p);
printf("\nEnter Key==>");
for(i=0; i<26; i++)
{
printf("\t");
printf("%c->",i+97);
k[i]=getch();
printf("%c",k[i]);
}
for(i=0; i<len; i++)
{
index=p[i]-97;
c[i]=k[index];
}
c[i]=NULL;
printf("\n\n Your ciphr text is==>%s",c);
getch();
}
Output:
Practical: 3
Aim: Write a program to implement Poly-alphabetic cipher Encryption.
#include<stdio.h>
#include<conio.h>
#include<string.h>
void main(){
char p[30],c[30],k[30];
int i,j=0,len;
clrscr();
printf("Enter Plaintext ==> ");
gets(p);
printf("Enter Key ==>");
gets(k);
len=strlen(k);
for(i=0;p[i]!=NULL;i++){
c[i]=((p[i]-97+k[i]-97)%26)+97;
j++;
if(j==len){
j=0;}
}
c[i]=NULL;
printf("\nCipher text is %s",c);
getch();
}
Output:
Practical: 4
Aim: Write a program to implement Hill cipher Encryption.
#include<stdio.h>
#include<conio.h>
void main()
{
int k[3][3],p1[3][1],c1[3][1],i,j,l;
char p[5];
clrscr();
printf("Enter 3 X 3 matrix ==> \n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
scanf("%d",&k[i][j]);
}
}
printf("Enter word of 3 letter ==> ");
scanf("%s",p);
for(i=0;i<3;i++)
{
p1[i][0]=p[i]-97;
}
for(i=0;i<3;i++)
{
for(j=0;j<1;j++)
{
c1[i][j]=0;
for(l=0;l<3;l++)
{
c1[i][j]+=k[i][l]*p1[l][j];
}
}
}
printf("\nCipher text is ");
for(i=0;i<3;i++)
{
for(j=0;j<1;j++)
{
printf("%c",(c1[i][j]%26)+97);
}
}
getch();
}
Output:
Practical: 5
Aim: Write a program to implement RSA Encryption – Decryption algorithm.
#include<stdio.h>
#include<conio.h>
#include<math.h>
int gcd(int a,int b)
{
int i,c;
for(i=1;i<=a&&i<=b;i++)
{
if(a%i==0 && b%i==0)
{
c = i;
}
}
return c;
}
void main()
{
int p,q,n,f,e,d,s,msg;
long enc,dec;
clrscr();
printf("Enter 1st prime number ==> ");
scanf("%d",&p);
printf("Enter 2nd prime number ==> ");
scanf("%d",&q);
n = p * q;
f = (p-1)*(q-1);
printf("\nn ==> %d",n);
Practical: 6
Aim: Write a program to implement Diffie Hellman key exchange algorithm.
#include<stdio.h>
#include<conio.h>
#include<math.h>
void main()
{
int q,Xa,Xb,Yb,Kb,alpha,Ya;
long Ka;
clrscr();
printf("Enter Prime number q ==> ");
scanf("%d",&q);
printf("Enter alpha which is primitive root of q ==> ");
scanf("%d",&alpha);
printf("Enter random private number of USER A which is less than q ==> ");
scanf("%d",&Xa);
Ya = pow(alpha,Xa);
Ya = fmod(Ya,q);
printf("\nPublic Key of USER A is %d ",Ya);
printf("\n\nEnter random private number of USER B which is less than q ==> ");
scanf("%d",&Xb);
Yb = pow(alpha,Xb);
Yb = fmod(Yb,q);
printf("\nPublic Key of USER B is %d ",Yb);
Ka = pow(Yb,Xa);
Ka = fmod(Ka,q);
printf("\n\nUSER A Secret key is %ld ",Ka);
Kb = pow(Ya,Xb);
Kb = fmod(Kb,q);
Practical: 7
Aim: Write a program to implement Simple Hash function.
#include<stdio.h>
#include<conio.h>
void main()
{
char ip1[20],ip2[20],ans;
int i,j;
clrscr();
printf("Enter First block Input ==> ");
gets(ip1);
printf("Enter First block Input ==> ");
gets(ip2);
printf("Answer ==>”);
for(i=0;i<8;i++)
{
ans=ip1[i]^ip2[i];
printf("%d",ans);
}
getch();
}
Output:
Practical: 8
Aim: Write a program to implement Rail Fence cipher encryption.
#include<stdio.h>
#include<conio.h>
#include<string.h>
void main()
{
char msg[20],ans[20][20];
int row=0,col=0,k=-1,key,msglen,i,j;
clrscr();
printf("Enter MSG ==> ");
gets(msg);
printf("Enter Key ==> ");
scanf("%d",&key);
msglen=strlen(msg);
for(i=0;i<key;i++)
{
for(j=0;j<msglen;j++)
{
ans[i][j]='\n';
}
}
for(i=0;i<msglen;i++)
{
ans[row][col++]=msg[i];
if(row==0 || row==key-1)
{
k=k*(-1);
}
row = row + k;
}
printf("Cipher text ==> ");
for(i=0;i<key;i++)
{
for(j=0;j<msglen;j++)
{
if(ans[i][j]!='\n')
{
printf("%c",ans[i][j]);
}
}
}
getch();
}
Output:
Practical: 9
Aim: Write a program to implement Play Fair cipher.
#include<stdio.h>
#include<conio.h>
#include<string.h>
void main()
{
char key[200],play[5][5],msg[20],ct[20];
int i,size,j,k,c1,c2,p,q,r1,r2,l;
clrscr();
printf("\nEnter any key ==> ");
gets(key);
strcat(key,"abcdefghiklmnopqrstuvwxyz");
size=strlen(key);
for(i=0;i<size;i++)
{
if(key[i]=='j')
{
key[i]='i';
}
for(j=i+1;j<size;)
{
if(key[j]==key[i])
{
for(k=j;k<size;k++)
{
key[k]=key[k+1];
}
size--;
}
else
{
j++;
}
}
}
for(i=0,k=0;i<5;i++)
{
for(j=0;j<5;j++)
{
play[i][j]=key[k];
k++;
}
}
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
printf("\t%c",play[i][j]);
}
printf("\n");
}
printf("\nEnter any Message ==> ");
gets(msg);
printf("\nCiphere text ==> ");
j=1;
for(i=0;i<strlen(msg);)
{
r1=0;
r2=0;
c1=0;
c2=0;
p=0;
q=0;
p=msg[i];
q=msg[j];
if(p=='j')
{
msg[i]='i';
}
if(q=='j')
{
msg[j]='i';
}
for(k=0;k<5;k++)
{
for(l=0;l<5;l++)
{
if(play[k][l]==p)
{
r1=k;
c1=l;
}
if(play[k][l]==q)
{
r2=k;
c2=l;
}
}
}
if(r1==r2)
{
ct[i]=play[r1][(c1+1)%5];
ct[j]=play[r2][(c2+1)%5];
printf("%c%c",ct[i],ct[j]);
}
else if(c1==c2)
{
ct[i]=play[(r1+1)%5][c1];
ct[j]=play[(r2+1)%5][c2];
printf("%c%c",ct[i],ct[j]);
}
else
{
ct[i]=play[r1][c2];
ct[j]=play[r2][c1];
printf("%c%c",ct[i],ct[j]);
}
i=i+2;
j=j+2;
}
getch();
}
Output:
Practical: 10
Aim: Write a program to implement S-DES key generation algorithm.
#include<stdio.h>
#include<conio.h>
void main()
{
int i, cnt=0, p8[8]={6,7,8,9,1,2,3,4};
int p10[10]={6,7,8,9,10,1,2,3,4,5};
char input[11], k1[10], k2[10], temp[11];
char LS1[5], LS2[5];
clrscr();
printf("Enter 10 bits input ==> ");
scanf("%s",input);
input[10]='\0';
for(i=0; i<10; i++)
{
cnt = p10[i];
temp[i] = input[cnt-1];
}
temp[i]='\0';
printf("\nYour p10 key is :");
for(i=0; i<10; i++)
{
printf("%d,",p10[i]);
}
printf("\nBits after p10 :");
puts(temp);
for(i=0; i<5; i++)
{
if(i==4)
temp[i]=temp[0];
else
temp[i]=temp[i+1];
}
for(i=5; i<10; i++)
{
if(i==9)
temp[i]=temp[5];
else
temp[i]=temp[i+1];
}
printf("Output after LS-1 :");
puts(temp);
printf("\nYour p8 key is :");
for(i=0; i<8; i++)
{
printf("%d,",p8[i]);
}
for(i=0; i<8; i++)
{
cnt = p8[i];
k1[i] = temp[cnt-1];
}
k1[i]='\0';
printf("\nYour key k1 is :");
puts(k1);
getch();
}
Output:
Practical: 11
Aim: Implement Euclid algorithm to find GCD.
#include<stdio.h>
#include<conio.h>
void main() {
int m, n; /* given numbers */
clrscr();
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);
getch();
}
Output:
Practical: 12
Aim: Perform various Encryption-Decryption techniques with cryptool.
● Introduction to cryptool
CrypTool is an open source-learning tool illustrating cryptographic and cryptanalytic
concepts. CrypTool implements more than 300 algorithms. Users can adjust these with own
parameters. The graphical interface, online documentation, analytic tools and algorithms of
CrypTool introduce users to the field of cryptography. Classical ciphers are available alongside
asymmetric cryptography including RSA, elliptic curve cryptography, digital signatures,
homomorphic encryption, and Diffie–Hellman key exchange, many of which are visualized by
animations.CrypTool also contains some didactical games, and an animated tutorial about
primes and elementary number theory.
Step 1:
First download the cryptool. Then install the cryptool. Open cryptool. When it is first time
launch it seen like as given in figure.
Step 2:
Click on new for performing any Encryption – Decryption techniques.
Step 3:
Here we want to perform playfair cipher encryption so from classic cipher drag playfair and
drop to new project screen. And also drag Text input and output.
Step 4:
Connect all connections properly. playfair has plain text as text input and key is given by
playfair box and ere we have to select encrypt or decrypt. Output side there are two text output
in that one is for output and another is for preformatted string.
Step 5:
This is for decryption.
Practical: 13
Aim: Study and use the Wire shark for the various network protocols.
● What is Wireshark?
Wireshark is a network packet analyzer. A network packet analyzer will try to capture network
packets and tries to display that packet data as detailed as possible. In the past, such tools were
either very expensive, proprietary, or both. However, with the advent of Wireshark, all that has
changed. Wireshark is perhaps one of the best open source packet analyzers available today.
● Features:
⮚ Available for UNIX and Windows.
⮚ Capture live packet data from a network interface.
⮚ Open files containing packet data captured with tcpdump/WinDump, Wireshark, and a
number of other packet capture programs.
⮚ Import packets from text files containing hex dumps of packet data.
⮚ Display packets with very detailed protocol information.
⮚ Save packet data captured.
⮚ Export some or all packets in a number of capture file formats.
⮚ Filter packets on many criteria.
⮚ Search for packets on many criteria.
⮚ Colorize packet display based on filters.
⮚ Create various statistics.
⮚ Data can be captured from the wire from a live network connection or read from a file
that recorded already captured packets.
⮚ Captured network data can be browsed via a GUI, or Command Line.
⮚ Captured files can be programmatically edited or converted via command-line switches
to the "editcap" program.
⮚ Data display can be refined using a display filter.
⮚ Plug-ins can be created for dissecting new protocols.
⮚ VoIP calls in the captured traffic can be detected. If encoded in a compatible encoding,
the media flow can even be played.
● Running Wireshark
When you run the Wireshark program, the Wireshark graphical user interface shown in Figure
1 will be displayed. Initially, no data will be displayed in the various windows.
Packet list - Displays all of the packets in the trace in the order they were recorded.
1. command menus
The command menus are standard pulldown menus located at the top of the
window. Of interest to us now are the File and Capture menus. The File menu allows
you to save captured packet data or open a file containing previously captured packet
data, and exit the Wireshark application. The Capture menu allows you to begin packet
capture.
2. packet-listing window
The packet-header details window provides details about the packet selected
(highlighted) in the packet listing window. (To select a packet in the packet listing
window, place the cursor over the packet’s one-line summary in the packet listing
window and click with the left mouse button.). These details include information about
the Ethernet frame (assuming the packet was sent/received over an Ethernet interface)
and IP datagram that contains this packet. The amount of Ethernet and IP-layer detail
4. packet-contents window
The packet-contents window displays the entire contents of the captured frame,
in both ASCII and hexadecimal format.
Towards the top of the Wireshark graphical user interface, is the packet
displayfilter field, into which a protocol name or other information can be entered in
order to filter the information displayed in the packet-listing window (and hence the
packet-header and packet-contents windows). In the example below, we’ll use the
packet-display filter field to have Wireshark hide (not display) packets except those that
correspond to HTTP messages.
● Wireshark problem:
Wireshark isn't an intrusion detection system. It will not warn you when someone does strange
things on your network that he/she isn’t allowed to do. However, if strange things happen,
Wireshark might help you figure out what is really going on.
Wireshark will not manipulate things on the network, it will only "measure" things from it.
Wireshark doesn't send packets on the network or do other active things (except for name
resolutions, but even that can be disabled)