Joined: Wed Mar 28, 2007 1:17 pm Posts: 118 Location: Cairo-Egypt Has thanked: 0 time Have thanks: 5 time
This is an Java(J2SE) implementation for the playfair cipher en-decription technique . It is a GUI program that ask the user to enter the encription key and then type the plain text and then press Encript button to encript and the cipher text will be desplayed.
Calugarar
Question subject: Re: Playfair Cipher technique
Posted: Mon Jun 29, 2009 12:34 am
Joined: Mon Jun 29, 2009 12:32 am Posts: 1 Has thanked: 0 time Have thanks: 0 time
tetosoft wrote:
This is an Java(J2SE) implementation for the playfair cipher en-decription technique . It is a GUI program that ask the user to enter the encription key and then type the plain text and then press Encript button to encript and the cipher text will be desplayed.
where is the code/program ?
msi_333
Question subject: Re: Playfair Cipher technique
Posted: Mon Jun 29, 2009 10:53 pm
Joined: Tue Mar 27, 2007 10:55 pm Posts: 2279 Location: Earth Has thanked: 39 time Have thanks: 61 time
here is the code :
Code:
public class playfair { private String KeyWord=new String(); private String Key=new String(); private char matrix_arr[][]= new char[5][5];
public void setKey(String k) { KeyWord=k; }
public void KeyGen() { boolean flag=true; char current;
Key=KeyWord;
for ( int i=0 ; i<26 ; i++) { current=(char)(i+97);
public String Encript(String Source) { String src_arr[]=Divid2Pairs(Source);
String Code=new String();
char one; char two;
int part1[]=new int[2]; int part2[]=new int[2];
//start on pair by pair for (int i=0 ; i< src_arr.length ;i++ ) { one = src_arr[i].charAt(0);//get first char two = src_arr[i].charAt(1);//get second char
part1 = GetDiminsions(one);//get position of the first char part2 = GetDiminsions(two);//get position of the second char
//check for specail casese if(part1[0]==part2[0])//same row { if (part1[1]<4) part1[1]++;
else part1[1]=0;
if(part2[1]<4) part2[1]++;
else part2[1]=0;
}
else if (part1[1]==part2[1]) //same column { if (part1[0]<4) part1[0]++;
else part1[0]=0;
if(part2[0]<4) part2[0]++;
else part2[0]=0; }
else { int temp=part1[1]; part1[1]=part2[1]; part2[1]=temp; }
public String Decript (String Code) { String Original=new String();
String src_arr[]=Divid2Pairs(Code);
char one; char two;
int part1[]=new int[2]; int part2[]=new int[2];
//start on pair by pair for (int i=0 ; i<= src_arr.length ;i++ ) { one = src_arr[i].charAt(0);//get first char two = src_arr[i].charAt(1);//get second char
part1 = GetDiminsions(one);//get position of the first char part2 = GetDiminsions(two);//get position of the second char
//check for specail casese if(part1[0]==part2[0])//same row { if (part1[1]>0) part1[1]--;
else part1[1]=4;
if(part2[1]>0) part2[1]--;
else part2[1]=4;
}
else if (part1[1]==part2[1]) //same column { if (part1[0]>0) part1[0]--;
else part1[0]=4;
if(part2[0]>0) part2[0]--;
else part2[0]=4; }
else { int temp=part1[1]; part1[1]=part2[1]; part2[1]=temp; }
Original =Original + matrix_arr[part1[0]][part1[1]] + matrix_arr[part2[0]][part2[1]]; }
_________________ Currenlty programming with : java , html , php , and javascript . (OCJP-6 certified )
EtharAmmar
Question subject: Re: Playfair Cipher technique
Posted: Wed Dec 28, 2011 1:02 am
I was searching on the Internet & found your code. It was very helpful to me. but unfortunately it contains some bugs. I had resolved them & adds the 'x' separation between repetitive characters.
public void setKey(String k) { // This function will take the input key from the user // Then it'll remove duplication of letters from the key // Will add it to the private KeyWord for matrix generation
String K_adjust=new String(); boolean flag = false;
public void KeyGen() { // This function adjust the alphabetical letters adding the // KeyWord on the beginning of them & then it calls the matrix function
boolean flag=true; char current;
Key=KeyWord;
for ( int i=0 ; i<26 ; i++) { current=(char)(i+97);
for (int i=0 ; i<5 ;i++) { for (int j=0 ; j<5 ; j++) { matrix_arr[i][j]=Key.charAt(counter); System.out.printf("%s ",matrix_arr[i][j]);
counter++; }
System.out.println("\n"); } }
private String format(String old_text) { // This function is to adjust the Text to encrypt // It changes all the 'j' letters to 'i' & add 'x' character // between repeatable pairs.
int i = 0; int j = 0; int len = 0; String text = new String(); len = old_text.length();
//System.out.println(old_text); /*** Change all j's into i's *****/ for (int tmp = 0; tmp < len; tmp++) { if (old_text.charAt(tmp) == 'j') { text = text + 'i'; } else text = text+old_text.charAt(tmp); } /**********************************/ len = text.length(); /*** Assign 'x' to letters that repeat in a diagram ***/ for (i = 0; i < len; i = i + 2) //run for half of string length { if (text.charAt(i+1) == text.charAt(i)) //if char = previous char { text = text.substring(0, i+1) + 'x' + text.substring(i+1); } else //not a repeat character, move along {} } return text; }
public String Encript(String Source) { System.out.println("Encription Start");
String src_arr[]=Divid2Pairs(Source);
String Code=new String();
char one; char two;
int part1[]=new int[2]; int part2[]=new int[2];
//start on pair by pair for (int i=0 ; i< src_arr.length ;i++ ) { one = src_arr[i].charAt(0);//get first char two = src_arr[i].charAt(1);//get second char
part1 = GetDiminsions(one);//get position of the first char part2 = GetDiminsions(two);//get position of the second char
//check for special cases if(part1[0]==part2[0])//same row { if (part1[1]<4) part1[1]++; else part1[1]=0;
if(part2[1]<4) part2[1]++; else part2[1]=0;
}
else if (part1[1]==part2[1]) //same column { if (part1[0]<4) part1[0]++; else part1[0]=0;
public String Decript (String Code) { System.out.println("Decription Start");
String Original=new String();
String src_arr[]=Divid2Pairs(Code);
char one; char two;
int part1[]=new int[2]; int part2[]=new int[2];
//start on pair by pair for (int i=0 ; i< src_arr.length ;i++ ) { one = src_arr[i].charAt(0);//get first char two = src_arr[i].charAt(1);//get second char
part1 = GetDiminsions(one);//get position of the first char part2 = GetDiminsions(two);//get position of the second char
//check for special cases if(part1[0]==part2[0])//same row { if (part1[1]>0) part1[1]--; else part1[1]=4;
if(part2[1]>0) part2[1]--; else part2[1]=4; }
else if (part1[1]==part2[1]) //same column { if (part1[0]>0) part1[0]--; else part1[0]=4;
Original =Original + matrix_arr[part1[0]][part1[1]] + matrix_arr[part2[0]][part2[1]]; }
System.out.println(Original); return Original; } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub
playfair x=new playfair();
Scanner sc = new Scanner(System.in);
System.out.println("Enter a lower case keyword:"); String keyword = sc.next(); x.setKey(keyword); x.KeyGen();
System.out.println("To Encrypt enter 1 \nTo Decript enter 2\nTesting both enter anything else:"); int choosen_value = sc.nextInt();
if(choosen_value==1) { System.out.println("Enter a lower case word to encrypt:"); String key_input = sc.next(); String Encripted= x.Encript(key_input); } else if(choosen_value==2) { System.out.println("Enter a lower case word to decrypt:"); String decripted = sc.next();
x.Decript(decripted); } else { System.out.println("Enter a lower case word to encrypt & decrypt:"); String key_input = sc.next();