You are on page 1of 33

312216205084

Riyaz Rafi Ahmed

PROGRAM: CAESAR CIPHER

#include <stdio.h>
int main()
{
char s[30],enc[30],dec[30],temp[30];
int key;
printf("Enter the word to be sent\n");
scanf("%s", &s);
printf("Enter the key to encrypt with\n");
scanf("%d", &key);
for(int i=0;s[i]!='\0';i++)
{
enc[i]=s[i]+(key%26);
}
printf("The encrypted word is %s\n", enc);
printf("Enter word to decrypt");
scanf("%s", &dec);
for(int j=0;dec[j]!='\0';j++)
{
temp[j]=dec[j]-(key%26);
}
printf("The decrypted word is %s", temp);
return 0;
}
312216205084
Riyaz Rafi Ahmed

OUTPUT:
312216205084
Riyaz Rafi Ahmed
Program: Playfair Cipher

import java.io.*;
import java.lang.*;
import java.util.*;

public class playfair


{
static void encrypt() //Playfair Encryption
{
String str,key;
int i,j,temp;
System.out.println("Enter the text: ");
Scanner sc=new Scanner(System.in);
str=sc.nextLine();
if(str.length()%2!=0)
str+="x";
char[] str2=str.toCharArray();
System.out.println("Enter the key value: ");
key=sc.nextLine();
int len=key.length();
int len2=0;
char[] key_arr=key.toCharArray();
char[] new_key=new char[100];
Map<Character,Integer> m2=new HashMap<Character,Integer>();
Map<Character,Integer> m=new HashMap<Character,Integer>();
char ch='a';
for(i=0;i<26;i++)
{
m2.put(ch, 0);
m.put(ch,0);
ch=(char)((int)ch+1);
}
int count_var=0;
for(i=0;i<len;i++)
312216205084
Riyaz Rafi Ahmed
if(m2.get(key_arr[i])==0)
{
new_key[count_var]=key_arr[i];
++count_var;
m2.put(key_arr[i],1);
}

char[] new_key2=new char[count_var];


for(i=0;i<count_var;i++)
new_key2[i]=new_key[i];
String strr=new String(new_key2);
len=strr.length();
len2=0;
char[][] a=new char[5][5];
for(i=0;i<5;i++)
for(j=0;j<5;j++)
a[i][j]=' ';

for(i=0;i<5;i++)
for(j=0;j<5;j++)
{
if(len<=0)
break;
a[i][j]=new_key2[len2];
m.put(new_key2[len2], 1);
++len2;
--len;
}

char c='a';
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(a[i][j]==' ')
{
while (m.get(c)==1)
c=(char)((int)c+1);
312216205084
Riyaz Rafi Ahmed
if(c=='j')
c=(char)((int)c+1);
a[i][j]=c;
c=(char)((int)c+1);
}
m.clear();

char char1,char2;
int r1,r2,c1,c2,k;
r1=c1=r2=c2=0;
System.out.println();
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
System.out.print(a[i][j]+" ");
}
System.out.println();
}

for(k=0;k<str.length();k+=2)
{
char1=str2[k];
char2=str2[k+1];
if(char1=='j')
char1='i';
if(char2=='j')
char2='i';
if(char1==char2)
{
if(char1=='x')
char2='z';
else
char2='x';
}
for(i=0;i<5;i++)
312216205084
Riyaz Rafi Ahmed
for(j=0;j<5;j++)
{
if(a[i][j]==char1)
{
r1=i;
c1=j;
}
if(a[i][j]==char2)
{
r2=i;
c2=j;
}
}
if(r1==r2)
{
str2[k]=a[r1][(c1+1)%5];
str2[k+1]=a[r2][(c2+1)%5];
}
else if(c1==c2)
{
str2[k]=a[(r1+1)%5][c1];
str2[k+1]=a[(r2+1)%5][c2];
}
else
{
str2[k]=a[r1][c2];
str2[k+1]=a[r2][c1];
}
}
System.out.println();
System.out.print("The encrypted code is: ");
System.out.println(str2);
}

static void decrypt() //Playfair Decryption


{
312216205084
Riyaz Rafi Ahmed
String str,key;
int i,j,temp;
System.out.println("Enter the text: ");
Scanner sc=new Scanner(System.in);
str=sc.nextLine();
char[] str2=str.toCharArray();
System.out.println("Enter the key value: ");
key=sc.nextLine();
int len=key.length();
int len2=0;
char[] key_arr=key.toCharArray();
char[] new_key=new char[100];
Map<Character,Integer> m2=new HashMap<Character,Integer>();
Map<Character,Integer> m=new HashMap<Character,Integer>();
char ch='a';
for(i=0;i<26;i++)
{
m2.put(ch, 0);
m.put(ch,0);
ch=(char)((int)ch+1);
}
int count_var=0;
for(i=0;i<len;i++)
if(m2.get(key_arr[i])==0)
{
new_key[count_var]=key_arr[i];
++count_var;
m2.put(key_arr[i],1);
}
char[] new_key2=new char[count_var];
for(i=0;i<count_var;i++)
new_key2[i]=new_key[i];
String strr=new String(new_key2);
len=strr.length();
len2=0;
char[][] a=new char[5][5];
312216205084
Riyaz Rafi Ahmed
for(i=0;i<5;i++)
for(j=0;j<5;j++)
a[i][j]=' ';

for(i=0;i<5;i++)
for(j=0;j<5;j++)
{
if(len<=0)
break;
a[i][j]=new_key2[len2];
m.put(new_key2[len2], 1);
++len2;
--len;
}
char c='a';
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(a[i][j]==' ')
{
while (m.get(c)==1)
c=(char)((int)c+1);
if(c=='j')
c=(char)((int)c+1);
a[i][j]=c;
c=(char)((int)c+1);
}
m.clear();

char char1,char2;
int r1,r2,c1,c2,k;
r1=c1=r2=c2=0;
System.out.println();
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
312216205084
Riyaz Rafi Ahmed
System.out.print(a[i][j]+" ");
}
System.out.println();
}

for(k=0;k<str.length();k+=2)
{
char1=str2[k];
char2=str2[k+1];
if(char1=='j')
char1='i';
if(char2=='j')
char2='i';
if(char1==char2)
{
if(char1=='x')
char2='z';
else
char2='x';
}
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{
if(a[i][j]==char1)
{
r1=i;
c1=j;
}
if(a[i][j]==char2)
{
r2=i;
c2=j;
}
}

if(r1==r2)
312216205084
Riyaz Rafi Ahmed
{
str2[k]=a[r1][(c1-1)%5];
str2[k+1]=a[r2][(c2-1)%5];
}
else if(c1==c2)
{
str2[k]=a[(r1-1)%5][c1];
str2[k+1]=a[(r2-1)%5][c2];
}
else
{
str2[k]=a[r1][c2];
str2[k+1]=a[r2][c1];
}
if(str2[k+1]=='x')
{
if(k+1==str.length()-1)
str2[k+1]='\0';
else
str2[k+1]=str2[k];
}
}
System.out.println();
System.out.print("The decrypted code is: ");
System.out.println(str2);
}

public static void main(String[] args)


{
int choice;
do
{
System.out.println("1)Playfair Cipher Encryption\n2)Playfair Cipher
Decryption\n3)Exit\n\nEnter your choice:");
Scanner sc=new Scanner(System.in);
choice=sc.nextInt();
312216205084
Riyaz Rafi Ahmed
switch(choice)
{
case 1: encrypt();
break;
case 2: decrypt();
break;
case 3: System.out.println("Exitting...");
break;
default: System.out.println("Invalid Choice");
}
System.out.println();
}
while(choice!=3);
}
}

Output
312216205084
Riyaz Rafi Ahmed
312216205084
Riyaz Rafi Ahmed

Program: Hill cipher

import java.io.*;
import java.lang.*;
import java.util.*;

public class hill


{
static void printMat(int[][] mat,int m,int n)
{
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
System.out.print(mat[i][j]+" ");
System.out.println();
}
}

static void printMat2(char[][] mat,int m,int n)


{
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
System.out.print(mat[i][j]+" ");
System.out.println();
}
}

static int[][] mmul(int[][] first,int[][] second)


{
int c,d,k,sum=0;
int [][] multiply=new int[3][1];
for (c = 0; c < 3; c++)
312216205084
Riyaz Rafi Ahmed
for (d = 0; d < 1; d++)
{
for (k = 0; k < 3; k++)
{
sum = sum + first[c][k]*second[k][d];
}
multiply[c][d] = sum;
sum = 0;
}
return multiply;
}

static int[][] minv(int[][] mat)


{
int i, j, det=0, detinv=1;
int cof[][] = new int[3][3];
int adj[][] = new int[3][3];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
cof[i][j]=mat[(i+1)%3][(j+1)%3]*mat[(i+2)%3][(j+2)%3]-
mat[(i+2)%3][(j+1)%3]*mat[(i+1)%3][(j+2)%3];
}
for(i=0;i<3;i++)
for(j=0;j<3;j++)
adj[i][j]=cof[j][i];

for(i = 0; i < 3; i++)


det = det + (mat[0][i] * (mat[1][(i+1)%3] * mat[2][(i+2)%3] -
mat[1][(i+2)%3] * mat[2][(i+1)%3]));
det=det%26;
if(det<0)
det=det+26;

for(i=1;i<26;i++)
if((det*i)%26==1)
312216205084
Riyaz Rafi Ahmed
{
detinv=i;
break;
}

for(i=0;i<3;i++)
for(j=0;j<3;j++)
adj[i][j]=(adj[i][j]*detinv)%26;
return adj;
}

static void encrypt() //Hill cipher encryption


{
String str,key;
int i,j,t,temp;
System.out.println("Enter the text: ");
Scanner sc=new Scanner(System.in);
str=sc.nextLine();
int len=str.length();
if(len%3==1)
str+="xx";
if(len%3==2)
str+="x";

char[] str2=str.toCharArray();
System.out.println("Enter the key matrix: ");
int[][] a=new int[3][3];

for(i=0;i<3;i++)
for(j=0;j<3;j++)
a[i][j]=sc.nextInt();

Map<Character,Integer> m=new HashMap<Character,Integer>();


Map<Integer,Character> m2=new HashMap<Integer,Character>();
char ch='a';
312216205084
Riyaz Rafi Ahmed
for(i=0;i<26;i++)
{
m.put(ch, i);
m2.put(i,ch);
ch=(char)((int)ch+1);
}
char c1,c2,c3;
int k;

for(i=0;i<=str.length()+len%3-3;i+=3)
{
k=i;
int[][] mat=new int[3][1];
int[][] result=new int[3][1];
c1=str2[i];
c2=str2[i+1];
c3=str2[i+2];
mat[0][0]=m.get(c1);
mat[1][0]=m.get(c2);
mat[2][0]=m.get(c3);
result=mmul(a,mat);
for(t=0;t<3;t++)
result[t][0]=result[t][0]%26;

str2[i]=m2.get(result[0][0]);
str2[i+1]=m2.get(result[1][0]);
str2[i+2]=m2.get(result[2][0]);
}
System.out.println(str2);
}

static void decrypt() //Hill cipher decryption


{
String str,key;
int i,j,t,ran,temp;
System.out.println("Enter the text: "); //pfogoa
312216205084
Riyaz Rafi Ahmed
Scanner sc=new Scanner(System.in);
str=sc.nextLine();
int len=str.length();
char[] str2=str.toCharArray();
System.out.println("Enter the key matrix: ");
int[][] a=new int[3][3];
int i2;
for(i=0;i<3;i++) for(j=0;j<3;j++) a[i][j]=sc.nextInt();

Map<Character,Integer> m=new HashMap<Character,Integer>();


Map<Integer,Character> m2=new HashMap<Integer,Character>();
char ch='a';
int t1,t2;
for(i=0;i<26;i++)
{
m.put(ch, i);
m2.put(i,ch);
ch=(char)((int)ch+1);
}
char c1,c2,c3;
int k,det=0;
for(i=0;i<=str.length()+len%3-3;i+=3)
{
k=i;
int[][] mat=new int[3][1];
int[][] result=new int[3][1];
c1=str2[i];
c2=str2[i+1];
c3=str2[i+2];
mat[0][0]=m.get(c1);
mat[1][0]=m.get(c2);
mat[2][0]=m.get(c3);
result=mmul(minv(a),mat);
for(t=0;t<3;t++)
{
result[t][0]=result[t][0]%26;
312216205084
Riyaz Rafi Ahmed
if(result[t][0]<0)
{
for(ran=0; ;++ran)
{
if(ran*26>(-result[t][0]))
{
result[t][0]=ran*26+result[t][0];
break;
}
}
}
str2[k++]=m2.get(result[t][0]);
}

str2[i]=m2.get(result[0][0]);
str2[i+1]=m2.get(result[1][0]);
if(m2.get(result[1][0])=='x' && i==str.length()+len%3-3)
str2[i+1]=' ';
str2[i+2]=m2.get(result[2][0]);
if(m2.get(result[2][0])=='x' && i==str.length()+len%3-3)
str2[i+2]=' ';
}
System.out.println(str2);
}

public static void main(String[] args)


{
int choice;
do
{
System.out.println("1)Hill Cipher Encryption\n2)Hill Cipher
Decryption\n3)Exit\n\nEnter your choice:");
Scanner sc=new Scanner(System.in);
choice=sc.nextInt();
switch(choice)
{
312216205084
Riyaz Rafi Ahmed
case 1: encrypt();
break;
case 2: decrypt();
break;
case 3: System.out.println("Exitting...");
break;
default: System.out.println("Invalid Choice");
}
System.out.println();
}
while(choice!=3);
}
}

Output
312216205084
Riyaz Rafi Ahmed
312216205084
Riyaz Rafi Ahmed

Program: Vigenere Cipher

#include<stdio.h>
#include<string.h>

int main()
{
char msg[50], key[20];
int msglen,keylen,i,j;
printf("Enter the message to encrypt\n");
scanf("%s", &msg);
printf("Enter the key");
scanf("%s", &key);
msglen = strlen(msg);
keylen = strlen(key);
char newKey[msglen], encryptedMsg[msglen], decryptedMsg[msglen];
for(i = 0, j = 0; i < msglen; ++i, ++j)
{
if(j == keylen)
j = 0;
newKey[i] = key[j];
}
newKey[i] = '\0'; //encryption
for(i = 0; i < msglen; ++i)
encryptedMsg[i] = ((msg[i] + newKey[i]) % 26) + 'A';
encryptedMsg[i] = '\0';

for(i = 0; i < msglen; ++i)


decryptedMsg[i] = (((encryptedMsg[i] - newKey[i]) + 26) % 26) + 'A';
decryptedMsg[i] = '\0';

printf("Original Message: %s", msg);


printf("\nKey: %s", key);
printf("\nNew Generated Key: %s", newKey);
printf("\nEncrypted Message: %s", encryptedMsg);
312216205084
Riyaz Rafi Ahmed
printf("\nDecrypted Message: %s", decryptedMsg);

return 0;
}

Output:
312216205084
Riyaz Rafi Ahmed

Program Code:

import java.io.*;
import java.lang.*;
import java.util.*;

public class rail


{
static void printMat(char[][] mat,int m,int n)
{
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
System.out.print(mat[i][j]+" ");
System.out.println();
}
}

static void encrypt() //Rail cipher encryption


{
String str;
int i,j,t,key,temp;
System.out.println("Enter the text: ");
Scanner sc=new Scanner(System.in);
str=sc.nextLine();
int len=str.length();
char[] str2=str.toCharArray();
System.out.println("Enter the key(Number of Levels): ");
key=sc.nextInt();
String result="";
int cols=0;
if(len%key==0)
cols=len/key;
else
312216205084
Riyaz Rafi Ahmed
cols=len/key+1;

char[][] res=new char[cols][key];


int counter=0;

for(i=0;i<cols;i++)
for(j=0;j<key;j++)
{
if(counter==len)
break;
res[i][j]=str2[counter];
++counter;
}
char res2[][]=new char[key][cols];
for(i=0;i<key;i++)
for(j=0;j<cols;j++)
res2[i][j]=res[j][i];

printMat(res2,key,cols);
System.out.println();
for(i=0;i<key;i++)
for(j=0;j<cols;j++)
result+=res2[i][j];
System.out.println("Encrypted text: ");
System.out.println(result);
}

static void decrypt() //Rail cipher decryption


{
String str;
int i,j,t,key,temp;
System.out.println("Enter the Cipher text: ");
Scanner sc=new Scanner(System.in);
str=sc.nextLine();
int len=str.length();
312216205084
Riyaz Rafi Ahmed
char[] str2=str.toCharArray();
System.out.println("Enter the key(Number of Levels): ");
key=sc.nextInt();
String result="";
int cols=key;
int rows=0,counter=0;
if(len%key==0)
rows=len/key;
else
rows=len/key+1;
char[][] res=new char[cols][rows];

for(i=0;i<cols;i++)
for(j=0;j<rows;j++)
{
if(counter==len)
break;
res[i][j]=str2[counter];
++counter;
}

char res2[][]=new char[rows][cols];


for(i=0;i<rows;i++)
for(j=0;j<cols;j++)
res2[i][j]=res[j][i];

printMat(res,cols,rows);
System.out.println();
for(i=0;i<rows;i++)
for(j=0;j<cols;j++)
result+=res2[i][j];
System.out.println("Decrypted text: ");
System.out.println(result);
}

public static void main(String[] args)


312216205084
Riyaz Rafi Ahmed
{
int choice;
do
{
System.out.println("1)Rail Fence Cipher Encryption\n2)Rail Fence Cipher
Decryption\n3)Exit\n\nEnter your choice:");
Scanner sc=new Scanner(System.in);
choice=sc.nextInt();
switch(choice)
{
case 1: encrypt();
break;
case 2: decrypt();
break;
case 3: System.out.println("Exitting...");
break;
default: System.out.println("Invalid Choice");
}
System.out.println();
}
while(choice!=3);
}
}
312216205084
Riyaz Rafi Ahmed

Output:
312216205084
Riyaz Rafi Ahmed

Program code:
import java.io.*;
import java.lang.*;
import java.util.*;

public class column


{
static void printMat(char[][] mat,int m,int n)
{
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
System.out.print(mat[i][j]+" ");
System.out.println();
}
}

static void encrypt() //Column cipher encryption


{
String str, key;
int i,j,t,temp;
System.out.println("Enter the text: ");
Scanner sc=new Scanner(System.in);
str=sc.nextLine();
int len=str.length();
char[] str2=str.toCharArray();
System.out.println("Enter the key: ");
key=sc.next();
int len_key=key.length();
char[] key_arr=key.toCharArray();
int[] key_arr2=new int[len_key];

for(i=0;i<len_key;i++)
312216205084
Riyaz Rafi Ahmed
key_arr2[i]=key_arr[i]-'0';

int rows,cols;
cols=len_key;
if(len%cols==0)
rows=len/cols;
else
rows=len/cols+1;

char[][] matrix=new char[rows][cols];


int len2=len;
t=0;
for(i=0;i<rows;i++)
for(j=0;j<cols;j++)
{
if(len2>0)
{
matrix[i][j]=str2[t];
++t;
--len2;
}
else
{
matrix[i][j]='x';
}
}

printMat(matrix,rows,cols);
System.out.println();
int[] order=new int[len_key];
int find=1;
for(i=0;i<len_key;i++)
for(j=0;j<len_key;j++)
if(key_arr2[j]==find)
{
order[i]=j;
312216205084
Riyaz Rafi Ahmed
++find;
break;
}

for(i=0;i<len_key;i++)
{
for(j=0;j<rows;j++)
System.out.print(matrix[j][order[i]]);
}
System.out.println();
}

static void decrypt() //Column cipher decryption


{
String str, key;
int i,j,t,temp;
System.out.println("Enter the text: ");
Scanner sc=new Scanner(System.in);
str=sc.nextLine();
int len=str.length();
char[] str2=str.toCharArray();
System.out.println("Enter the key: ");
key=sc.next();
int len_key=key.length();
char[] key_arr=key.toCharArray();
int[] key_arr2=new int[len_key];
for(i=0;i<len_key;i++)
key_arr2[i]=key_arr[i]-'0';
int rows,cols;
cols=len_key;
if(len%cols==0)
rows=len/cols;
else
rows=len/cols+1;
char[][] matrix=new char[rows][cols];
int len2=len;
312216205084
Riyaz Rafi Ahmed
int[] order=new int[len_key];
int find=1;
for(i=0;i<len_key;i++)
for(j=0;j<len_key;j++)
if(key_arr2[j]==find)
{
order[i]=j;
++find;
break;
}

t=0;
for(i=0;i<len_key;i++)
for(j=0;j<rows;j++)
{
matrix[j][order[i]]=str2[t];
++t;
}

char[] result=new char[len];


t=0;
for(i=0;i<rows;i++)
for(j=0;j<cols;j++)
if(matrix[i][j]!='x')
result[t++]=matrix[i][j];

System.out.println(result);
}

public static void main(String[] args)


{
int choice;
do
{
System.out.println("1)Column Transposition Cipher
Encryption\n2)Column Transposition Cipher Decryption\n3)Exit\n\nEnter your choice:");
312216205084
Riyaz Rafi Ahmed
Scanner sc=new Scanner(System.in);
choice=sc.nextInt();
switch(choice)
{
case 1: encrypt();
break;
case 2: decrypt();
break;
case 3: System.out.println("Exitting...");
break;
default: System.out.println("Invalid Choice");
}
System.out.println();
}
while(choice!=3);
}
}
312216205084
Riyaz Rafi Ahmed

Output:

You might also like