Sunday 17 March 2013

Implementing Caesar Cipher Mono-alphabetic Substitution In Java:


For only Alphabets (Capital and Small) :


import java.io.*;
public class caesarcipher
{
public String encrypt(int shift, String line)
{
String result="";
int offset;
for(int i=0;i<line.length();i++)
{
if(line.charAt(i)>='a'&&line.charAt(i)<='z')
{
offset=((int)(line.charAt(i)))-97;
offset=(offset+shift)%26;
result+=(char)(offset+97);
}
else if(line.charAt(i)>='A'&&line.charAt(i)<='Z')
{
offset=((int)(line.charAt(i)))-65;
offset=(offset+shift)%26;
result+=(char)(offset+65);
}
else
result=result+line.charAt(i);
}
return result;
}
public String decrypt(int shift, String line)
{
String result="";
int offset;
for(int i=0;i<line.length();i++)
{
if(line.charAt(i)!=' ')
{
offset=((int)(line.charAt(i)))-97;
offset=(offset-shift)%26;
if(offset<0)
offset+=26;
result+=(char)(offset+97);
}
else
result=result+line.charAt(i);
}
return result;
}
public static void main(String args[])throws IOException
{
caesarcipher obj=new caesarcipher();
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
int choice;
System.out.println("Menu:\n1: Encryption\n2: Decryption");
choice=Integer.parseInt(in.readLine());
System.out.println("Enter the shift: ");
int shift=Integer.parseInt(in.readLine());
System.out.println("Enter the line: ");
String line=in.readLine();
System.out.println("Result:");
switch(choice)
{
case 1:System.out.println(obj.encrypt(shift,line));
break;
case 2:System.out.println(obj.decrypt(shift,line));
break;
default:
System.out.println("Invalid input!");
break;
}
}
}

For all ASCII values from 0 to 255:


import java.io.*;
public class caesarcipher
{
public String encrypt(int shift, String line)
{
String result="";
int offset;
for(int i=0;i<line.length();i++)
{
offset=((int)line.charAt(i)+shift)%256;
result+=(char)(offset);
}
return result;
}
public String decrypt(int shift, String line)
{
String result="";
int offset;
for(int i=0;i<line.length();i++)
{
offset=((int)line.charAt(i)-shift)%256;
if(offset<0)
offset+=256;
result+=(char)(offset);
}
return result;
}
public static void main(String args[])throws IOException
{
caesarcipher obj=new caesarcipher();
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
int choice;
System.out.println("Menu:\n1: Encryption\n2: Decryption");
choice=Integer.parseInt(in.readLine());
System.out.println("Enter the shift: ");
int shift=Integer.parseInt(in.readLine());
System.out.println("Enter the line: ");
String line=in.readLine();
System.out.println("Result:");
switch(choice)
{
case 1:System.out.println(obj.encrypt(shift,line));
break;
case 2:System.out.println(obj.decrypt(shift,line));
break;
default:
System.out.println("Invalid input!");
break;
}
}
}


No comments:

Post a Comment